MySQLで文字列をバイト単位で数える方法について書いています。
文字列をバイト単位で数えるときにはLENGTH関数を使うと良いです。
公式のこちらにLENGTH関数についての記載があります。
載せているSQLはMySQLのバージョン8.0.32を使って動作を確認しています。
MySQLで文字列をバイト単位で数える
LENGTH関数を使うと、文字列をバイト単位で数えることができます。
例えば、下記のように使うことができます。
SELECT LENGTH('codelikes.com');
こうすると、渡した文字列をバイト数で返します。
実行すると、下記のように13が返ってきました。
mysql> SELECT LENGTH('codelikes.com');
+-------------------------+
| LENGTH('codelikes.com') |
+-------------------------+
| 13 |
+-------------------------+
1 row in set (0.00 sec)
日本語(マルチバイト文字)を渡すと?
バイト単位で取得するので、日本語などのマルチバイト文字を渡すと、単純な文字数としては返ってきません。
例えば、下記のようにSQLを実行します。
mysql> SELECT LENGTH('りんご');
+---------------------+
| LENGTH('りんご') |
+---------------------+
| 9 |
+---------------------+
1 row in set (0.00 sec)
MySQLではデフォルトの文字コードがUTF8になっているので、日本語は1文字が3バイトです。
そのため、9バイトとして値が返ってきました。
CHAR_LENGTH関数との違い
CHAR_LENGTH関数では、マルチバイト文字も文字数として数えることができます。
先ほどの文字列をCHAR_LENGTH関数に渡すと、下記のようになります。
mysql> SELECT CHAR_LENGTH('りんご');
+--------------------------+
| CHAR_LENGTH('りんご') |
+--------------------------+
| 3 |
+--------------------------+
1 row in set (0.00 sec)
LENGTH関数はバイト数を取得して返していました。
このように、CHAR_LENGTH関数ではマルチバイトでも文字数として返してくれます。
単純な文字数を取得したいときにはCHAR_LENGTH関数を使いましょう。
CHAR_LENGTH関数については、下記に記事を書いているので確認してみてください。
MySQLで文字列の長さを数える方法!(CHAR_LENGTH関数)
MySQLで文字列の長さを数える方法について書いています。 CHAR_LENGTH関数を使うことで、文字列の長さを数えることができます。 公式のこちらにCHAR_LENGTH関数についての記載があります。 載せているSQLはMySQLのバー...
NULLを渡した時は?
LENGTH関数にNULLを渡すと、NULLが返ってきます。
mysql> SELECT LENGTH(NULL);
+--------------+
| LENGTH(NULL) |
+--------------+
| NULL |
+--------------+
1 row in set (0.00 sec)
「0」が返ってくるわけではないので、注意しましょう。
MySQLで文字列をバイト単位で数える方法まとめ
今回はMySQLで文字列の長さをバイト単位で数える、LENGTH関数について書きました。
記事の内容をまとめると、下記のようになります。
・LENGTH関数を使うと、文字列のバイト数が返ってくる。
・日本語などの文字数を数えるときには、CHAR_LENGTH関数を使う。
・NULLを渡すと、0ではなくNULLが返ってくるので気を付ける。
・日本語などの文字数を数えるときには、CHAR_LENGTH関数を使う。
・NULLを渡すと、0ではなくNULLが返ってくるので気を付ける。
コメント