MySQLで文字列の長さを数える方法!(CHAR_LENGTH関数)

MySQL MySQL

MySQLで文字列の長さを数える方法について書いています。
CHAR_LENGTH関数を使うことで、文字列の長さを数えることができます。

公式のこちらにCHAR_LENGTH関数についての記載があります。
載せているSQLはMySQLのバージョン8.0.32を使って動作を確認しています。

MySQLで文字列の長さを数える

CHAR_LENGTH関数を使うと、文字列の長さを数えることができます。
例えば、下記のように使うことができます。

SELECT CHAR_LENGTH('コードライク');

CHAR_LENGTH関数に渡した文字列の長さを数えてくれます。
今回は文字列を直接指定していますが、テーブルからカラムを指定して、カラムに格納されている文字列の長さを数えることもできます。

実際に実行すると、下記のように文字列の長さとして「6」が返ってきました。

mysql> SELECT CHAR_LENGTH('コードライク');
+-----------------------------------+
| CHAR_LENGTH('コードライク')       |
+-----------------------------------+
|                                 6 |
+-----------------------------------+
1 row in set (0.00 sec)

LENGTH関数との違いは?

LENGTH関数は文字列のバイト数を返すので、文字列を渡すと、文字列ではなくバイト数が返ってきます。
バイト数は日本語などのマルチバイト文字のときには、文字数よりも多くなるので、文字数をカウントすることができません。

CHAR_LENGTH関数はバイト数に関係なく、1文字は1文字としてカウントしてくれます。
そのため、下記のようにマルチバイト文字をそれぞれの関数に渡すと、挙動が違うことがわかります。

mysql> SELECT LENGTH('ぶどう'), CHAR_LENGTH('ぶどう');
+---------------------+--------------------------+
| LENGTH('ぶどう')    | CHAR_LENGTH('ぶどう')    |
+---------------------+--------------------------+
|                   9 |                        3 |
+---------------------+--------------------------+
1 row in set (0.00 sec)

LENGTH関数では、文字列がマルチバイト文字なので、1文字3バイトで計算されて「9」が返ってきました。
CHAR_LENGTH関数では、マルチバイト文字でもそのまま数えてくれるので「3」になりました。

NULLを渡すと?

CHAR_LENGTH関数にNULLを渡すと、NULLが返ってきます。

mysql> SELECT CHAR_LENGTH(NULL);
+-------------------+
| CHAR_LENGTH(NULL) |
+-------------------+
|              NULL |
+-------------------+
1 row in set (0.00 sec)

0ではないので、気をつけましょう。

CHARACTER_LENGTH関数は別名

CHARACTER_LENGTH関数は、CHAR_LENGTH関数の別名になります。
そのため、下記のように同じ文字列を渡すと、同じ結果が返ってきます。

mysql> SELECT CHAR_LENGTH('コードライクホゲホゲ'), CHARACTER_LENGTH('コードライ クホゲホゲ');
+-----------------------------------------------+----------------------------------------------------+
| CHAR_LENGTH('コードライクホゲホゲ')           | CHARACTER_LENGTH('コードライクホゲホゲ')           |
+-----------------------------------------------+----------------------------------------------------+
|                                            10 |                                                 10 |
+-----------------------------------------------+----------------------------------------------------+
1 row in set (0.00 sec)

MySQLで文字列の長さを数える方法まとめ

今回はMySQLで文字列の長さを数える方法について書きました。
記事の内容をまとめると、下記のようになります。

・CHAR_LENGTH関数を使うと、マルチバイト文字に関わらず文字数を数えれる。
・CHAR_LENGTH関数にNULLを渡すと、NULLが返る。(0ではないので注意)
・CHARACTER_LENGTH関数はCHAR_LENGTH関数のシノニム(別名)だった。

コメント

タイトルとURLをコピーしました