mysql文字列を切り取りupdate select
親測定有効フォーマットはupdateで変更する必要があるテーブルb 1 inner join(クエリーされた一時テーブル)b 2 on b 1である.id=b2.id set b1.変更するフィールド=b 2.クエリーされた値
表の1つのフィールドの一部を取り出し、別の新しいフィールドに入れたいのでmysqlの文字列切り取り機能を思い浮かべました.
更新が必要なデータ:
mysqlはset selectの結果を直接使用できないため、inner joinを使用する必要があります.
上完整栗:
切り取り文字列栗を添付:
1.文字列切り取り:left(str,length)
2.文字列切り取り:right(str,length)
3.文字列切り取り:substring(str,pos);substring(str, pos, len)
3.1文字列の4番目の文字位置から、終了するまで取り出す.
3.2文字列の4文字目の位置から取り始め、2文字だけ取ります.
3.3文字列の4番目の文字位置(逆数)から、最後まで取り出す.
3.4文字列の4文字目の位置(逆数)から取り始め、2文字だけ取ります.
注意関数substring(str,pos,len)ではposは負の値であってもよいが、lenは負の値をとることができない.
4.文字列切り取り:substring_index(str,delim,count)
4.1 2番目の'.'を切り取る前のすべての文字.
4.2 2番目の'.'を切り取る(逆数)以降のすべての文字.
4.3文字列にdelimパラメータで指定された値が見つからない場合は、文字列全体を返します.
4.4表のあるフィールドデータの中間値を切り取る.例えば、このフィールドデータは1,2,3である.
表の1つのフィールドの一部を取り出し、別の新しいフィールドに入れたいのでmysqlの文字列切り取り機能を思い浮かべました.
更新が必要なデータ:
select params, substring_index(params, '=', -1), paramId from task where expiredDate is null;
mysqlはset selectの結果を直接使用できないため、inner joinを使用する必要があります.
上完整栗:
update task a inner join (select id, substring_index(params, '=', -1) as param_id from task b where b.expiredDate is null) c
on a.id = c.id set a.paramId = c.param_id where a.expiredDate is null ;
切り取り文字列栗を添付:
1.文字列切り取り:left(str,length)
mysql> select left('sqlstudy.com', 3);
+-------------------------+
| left('sqlstudy.com', 3) |
+-------------------------+
| sql |
+-------------------------+
2.文字列切り取り:right(str,length)
mysql> select right('sqlstudy.com', 3);
+--------------------------+
| right('sqlstudy.com', 3) |
+--------------------------+
| com |
+--------------------------+
3.文字列切り取り:substring(str,pos);substring(str, pos, len)
3.1文字列の4番目の文字位置から、終了するまで取り出す.
mysql> select substring('sqlstudy.com', 4);
+------------------------------+
| substring('sqlstudy.com', 4) |
+------------------------------+
| study.com |
+------------------------------+
3.2文字列の4文字目の位置から取り始め、2文字だけ取ります.
mysql> select substring('sqlstudy.com', 4, 2);
+---------------------------------+
| substring('sqlstudy.com', 4, 2) |
+---------------------------------+
| st |
+---------------------------------+
3.3文字列の4番目の文字位置(逆数)から、最後まで取り出す.
mysql> select substring('sqlstudy.com', -4);
+-------------------------------+
| substring('sqlstudy.com', -4) |
+-------------------------------+
| .com |
+-------------------------------+
3.4文字列の4文字目の位置(逆数)から取り始め、2文字だけ取ります.
mysql> select substring('sqlstudy.com', -4, 2);
+----------------------------------+
| substring('sqlstudy.com', -4, 2) |
+----------------------------------+
| .c |
+----------------------------------+
注意関数substring(str,pos,len)ではposは負の値であってもよいが、lenは負の値をとることができない.
4.文字列切り取り:substring_index(str,delim,count)
4.1 2番目の'.'を切り取る前のすべての文字.
mysql> select substring_index('www.sqlstudy.com.cn', '.', 2);
+------------------------------------------------+
| substring_index('www.sqlstudy.com.cn', '.', 2) |
+------------------------------------------------+
| www.sqlstudy |
+------------------------------------------------+
4.2 2番目の'.'を切り取る(逆数)以降のすべての文字.
mysql> select substring_index('www.sqlstudy.com.cn', '.', -2);
+-------------------------------------------------+
| substring_index('www.sqlstudy.com.cn', '.', -2) |
+-------------------------------------------------+
| com.cn |
+-------------------------------------------------+
4.3文字列にdelimパラメータで指定された値が見つからない場合は、文字列全体を返します.
mysql> select substring_index('www.sqlstudy.com.cn', '.coc', 1);
+---------------------------------------------------+
| substring_index('www.sqlstudy.com.cn', '.coc', 1) |
+---------------------------------------------------+
| www.sqlstudy.com.cn |
+---------------------------------------------------+
4.4表のあるフィールドデータの中間値を切り取る.例えば、このフィールドデータは1,2,3である.
mysql> select substring_index(substring_index( , ',', 2) , ',', -1) from ;
+--------------------------------------------------------------+
| substring_index(substring_index( , ',', 2); , ',', -1) |
+--------------------------------------------------------------+
| 2 |
+--------------------------------------------------------------+