mysql文字列を切り取りupdate select

4425 ワード

親測定有効フォーマットはupdateで変更する必要があるテーブルb 1 inner join(クエリーされた一時テーブル)b 2 on b 1である.id=b2.id set b1.変更するフィールド=b 2.クエリーされた値
 
表の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                                                            |
+--------------------------------------------------------------+