MySQL文字列切り取り関連関数

6985 ワード

MySQL文字列切り取り関連関数
作業中、あるタスクが3つの結果に対応し、それぞれ異なるデータテーブルに格納されるなど、あるフィールドを分割子で構成する文字列をフィールド値としてデータベーステーブルにアクセスする必要がある場合があります.この場合、この3つの異なるテーブルのプライマリ・キーを所定の順序で組み合わせることができます(プライマリ・キーa:プライマリ・キーb:プライマリ・キーc).タスク対応カテゴリの詳細情報を別々に調べる必要がある場合、特定の位置の文字列(プライマリ・キーb)joinテーブルbを切り取って操作することができる.ちょうど最近もこの操作に遭遇して、わざわざMySQL文字列を切り取った関連関数を整理して、今後振り返るようにしました.
一、left(str,len)
は、文字列strの左からのlen文字を返します.いずれかのパラメータがNULLの場合、NULLが返されます.
mysql> select left('shinejaie', 5);
+---------------------------------------------------------+
| left('shinejaie', 5)                                    |
+---------------------------------------------------------+
| shine                                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)
right(str, len)
   str     len     。        NULL  ,    NULL。
mysql> select right('shinejaie', 4);
+---------------------------------------------------------+
| right('shinejaie', 4)                                   |
+---------------------------------------------------------+
| jaie                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)
substring_index(str, delim, count)
   str    count         delim        。   count    ,          (         )             ;   count    ,           (         )             。       ,          。       str      delim       ,        。
mysql> select substring_index('home.cnblogs.com', '.', 2);
+---------------------------------------------------------+
| substring_index('home.cnblogs.com', '.', 2)             |
+---------------------------------------------------------+
| home.cnblogs                                            |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select substring_index('home.cnblogs.com', '/', 2);
+---------------------------------------------------------+
| substring_index('home.cnblogs.com', '/', 2)             |
+---------------------------------------------------------+
| home.cnblogs.com                                        |
+---------------------------------------------------------+
1 row in set (0.00 sec)
substring() substr() ---> substring(str, pos)、substring(str from pos)、substring(str, pos, len)、substring(str from pos for len)
   4        ,   len             str     pos         ;  len             str     pos    ,    len      。   FROM               SQL   。pos         ,      ,             str      (      ),         pos        。  ,    pos            substring()    。
mysql> select substring('shinejaie', 6);
+---------------------------------------------------------+
| substring('shinejaie',6)                                |
+---------------------------------------------------------+
| jaie                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select substr('shinejaie' from 6);
+---------------------------------------------------------+
| substr('shinejaie' from 6)                              |
+---------------------------------------------------------+
| jaie                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select substring('shinejaie', -9, 5);
+---------------------------------------------------------+
| substring('shinejaie', -9, 5)                           |
+---------------------------------------------------------+
| shine                                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)
trim([{both | leading | trailing} [remstr] form] str)
     str   remstr          ,       。         bothleadingtrailing,      both,        。remstr         ,       ,       。
mysql> select trim('  shinejaie   ');
+---------------------------------------------------------+
| trim('  shinejaie   ')                                  |
+---------------------------------------------------------+
| shinejaie                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select trim(leading 'cn_' from 'cn_shinejaiecn_');
+---------------------------------------------------------+
| trim(leading 'cn_' from 'cn_shinejaiecn_')              |
+---------------------------------------------------------+
| shinejaiecn_                                            |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select trim(both 'cn_' from 'cn_shinejaiecn_');
+---------------------------------------------------------+
| trim(both 'cn_' from 'cn_shinejaiecn_')                 |
+---------------------------------------------------------+
| shinejaie                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select trim(trailing 'cn_' from 'cn_shinejaiecn_');
+---------------------------------------------------------+
| trim(trailing 'cn_' from 'cn_shinejaiecn_')             |
+---------------------------------------------------------+
| cn_shinejaie                                            |
+---------------------------------------------------------+
1 row in set (0.00 sec)