メインコンテンツまでスキップ
に最終更新

LENGTH

説明​

LENGTH 関数は文字列のバイト長を返します。この関数は文字数ではなく、文字列が UTF-8 エンコーディングで占めるバイト数を計算します。

CHAR_LENGTH との違い:

  • LENGTH() はバイト数を返します
  • CHAR_LENGTH() と CHARACTER_LENGTH() は文字数を返します
  • ASCII 文字では、バイト数と文字数は同じです
  • 中国語の文字や絵文字など、複数バイトの文字では、通常、バイト数が文字数より大きくなります

別名​

  • OCTET_LENGTH()

構文​

LENGTH(<str>)

パラメータ​

パラメータ説明
<str>バイト長を計算する文字列。型: VARCHAR

戻り値​

文字列のバイト長を表す INT 型の値を返します。

特殊なケース:

  • 引数が NULL の場合は NULL を返します
  • 空文字列の場合は 0 を返します
  • 結果は UTF-8 エンコーディングでのバイト数です

例​

  1. ASCII 文字(バイト数 = 文字数)
SELECT LENGTH('abc'), CHAR_LENGTH('abc');
+---------------+--------------------+
| LENGTH('abc') | CHAR_LENGTH('abc') |
+---------------+--------------------+
| 3 | 3 |
+---------------+--------------------+
  1. 中国語の文字(バイト数 > 文字数)
SELECT LENGTH('中国'), CHAR_LENGTH('中国');
+------------------+---------------------+
| LENGTH('中国') | CHAR_LENGTH('中国') |
+------------------+---------------------+
| 6 | 2 |
+------------------+---------------------+
  1. NULL 値の処理
SELECT LENGTH(NULL);
+--------------+
| LENGTH(NULL) |
+--------------+
| NULL |
+--------------+
  1. 空文字列
SELECT LENGTH('');
+------------+
| LENGTH('') |
+------------+
| 0 |
+------------+
  1. 異なる種類の文字が混在する文字列
SELECT LENGTH('Hello世界'), CHAR_LENGTH('Hello世界');
+-----------------------+----------------------------+
| LENGTH('Hello世界') | CHAR_LENGTH('Hello世界') |
+-----------------------+----------------------------+
| 11 | 7 |
+-----------------------+----------------------------+
  1. エスケープ文字と ASCII スペース
SELECT LENGTH('\t\n\r'), LENGTH('  ');
+------------------+--------------+
| LENGTH('\t\n\r') | LENGTH(' ') |
+------------------+--------------+
| 3 | 2 |
+------------------+--------------+
  1. UTF-8 の複数バイト文字と文字数の比較
SELECT LENGTH('ṭṛì'), CHAR_LENGTH('ṭṛì');
+--------------------+-------------------------+
| LENGTH('ṭṛì') | CHAR_LENGTH('ṭṛì') |
+--------------------+-------------------------+
| 8 | 3 |
+--------------------+-------------------------+
  1. 絵文字(通常、各グリフは 4 バイト)
SELECT LENGTH('😀😁'), CHAR_LENGTH('😀😁');
+--------------------+-------------------------+
| LENGTH('😀😁') | CHAR_LENGTH('😀😁') |
+--------------------+-------------------------+
| 8 | 2 |
+--------------------+-------------------------+
  1. 数字の文字列
SELECT LENGTH('12345'), CHAR_LENGTH('12345');
+-----------------+----------------------+
| LENGTH('12345') | CHAR_LENGTH('12345') |
+-----------------+----------------------+
| 5 | 5 |
+-----------------+----------------------+