文字列関数(置換, 長さ, 切り出し, 結合)の使い方

MySQLで利用できる文字列関数について確認します。「文字数の取得」「文字列の結合」「文字列の取得」など利用例を交えて解説します。

長さ

CHAR_LENGTH|文字数

引数の文字数を返します。

mysql> SELECT CHAR_LENGTH('abcde'), CHAR_LENGTH('あいうえお');
+----------------------+--------------------------------+
| CHAR_LENGTH('abcde') | CHAR_LENGTH('あいうえお')      |
+----------------------+--------------------------------+
|                    5 |                              5 |
+----------------------+--------------------------------+

LENGTH|文字列の長さ(バイト単位)

文字列の長さをバイト単位で返します。

mysql> SELECT LENGTH('abcde'), LENGTH('あいうえお');
+-----------------+---------------------------+
| LENGTH('abcde') | LENGTH('あいうえお')      |
+-----------------+---------------------------+
|               5 |                        15 |
+-----------------+---------------------------+

変更

INSERT|指定位置に挿入

文字列を、指定位置に指定文字数だけ挿入します。

mysql> SELECT INSERT('明日、スカイツリーに行く', 4, 6, '京都');
+----------------------------------------------------------------+
| INSERT('明日、スカイツリーに行く', 4, 6, '京都')               |
+----------------------------------------------------------------+
| 明日、京都に行く                                               |
+----------------------------------------------------------------+

CONCAT|文字列結合

mysql> SELECT CONCAT('山田', '太郎');
+----------------------------+
| CONCAT('山田', '太郎')     |
+----------------------------+
| 山田太郎                   |
+----------------------------+

FORMAT|数値の書式設定

数値を、指定小数点以下桁数に書式設定します。

mysql> SELECT FORMAT(11111.1111, 2);
+-----------------------+
| FORMAT(11111.1111, 2) |
+-----------------------+
| 11,111.11             |
+-----------------------+

LOWER|小文字化

mysql> SELECT LOWER('ABCdef');
+-----------------+
| LOWER('ABCdef') |
+-----------------+
| abcdef          |
+-----------------+

UPPER|大文字化

mysql> SELECT UPPER('ABCdef');
+-----------------+
| UPPER('ABCdef') |
+-----------------+
| ABCDEF          |
+-----------------+

REPLACE|置換

mysql> SELECT REPLACE('aaAAbbBBaaAAbbBB', 'aa', 'ss');
+-----------------------------------------+
| REPLACE('aaAAbbBBaaAAbbBB', 'aa', 'ss') |
+-----------------------------------------+
| ssAAbbBBssAAbbBB                        |
+-----------------------------------------+

位置

INSTR|出現位置

文字列が最初に出現する位置を返します。

mysql> SELECT INSTR('明日、北海道に行く', '北海道');
+---------------------------------------------------+
| INSTR('明日、北海道に行く', '北海道')             |
+---------------------------------------------------+
|                                                 4 |
+---------------------------------------------------+

取得

LEFT|左端から

mysql> SELECT LEFT('明日、北海道に行く', 3);
+----------------------------------------+
| LEFT('明日、北海道に行く', 3)          |
+----------------------------------------+
| 明日、                                 |
+----------------------------------------+

RIGHT|右端から

mysql> SELECT RIGHT('明日、北海道に行く', 3);
+-----------------------------------------+
| RIGHT('明日、北海道に行く', 3)          |
+-----------------------------------------+
| に行く                                  |
+-----------------------------------------+

SUBSTR|指定位置から

mysql> SELECT SUBSTR('明日、北海道に行く', 4, 3);
+---------------------------------------------+
| SUBSTR('明日、北海道に行く', 4, 3)          |
+---------------------------------------------+
| 北海道                                      |
+---------------------------------------------+

SUBSTRING_INDEX|区切り文字で

区切り文字指定回数 だけ 出現する前の文字列 を返します

mysql> SELECT SUBSTRING_INDEX('http:://localhost/aaa/bbb/ccc', '/', 1);
+----------------------------------------------------------+
| SUBSTRING_INDEX('http:://localhost/aaa/bbb/ccc', '/', 1) |
+----------------------------------------------------------+
| http::                                                   |
+----------------------------------------------------------+

mysql> SELECT SUBSTRING_INDEX('http:://localhost/aaa/bbb/ccc', '/', 3);
+----------------------------------------------------------+
| SUBSTRING_INDEX('http:://localhost/aaa/bbb/ccc', '/', 3) |
+----------------------------------------------------------+
| http:://localhost                                        |
+----------------------------------------------------------+

mysql> SELECT SUBSTRING_INDEX('http:://localhost/aaa/bbb/ccc', '/', 5);
+----------------------------------------------------------+
| SUBSTRING_INDEX('http:://localhost/aaa/bbb/ccc', '/', 5) |
+----------------------------------------------------------+
| http:://localhost/aaa/bbb                                |
+----------------------------------------------------------+

削除

LTRIM|先頭空白を削除

mysql> SELECT LTRIM('   おはよう!   ');
+--------------------------------+
| LTRIM('   おはよう!   ')      |
+--------------------------------+
| おはよう!                     |
+--------------------------------+

RTRIM|末尾空白を削除

mysql> SELECT RTRIM('   おはよう!   ');
+--------------------------------+
| RTRIM('   おはよう!   ')      |
+--------------------------------+
|    おはよう!                  |
+--------------------------------+

TRIM|先頭と末尾にある空白を削除

mysql> SELECT TRIM('   おはよう!   ');
+-------------------------------+
| TRIM('   おはよう!   ')      |
+-------------------------------+
| おはよう!                    |
+-------------------------------+