ホームページ >データベース >mysql チュートリアル >MySQL LENGTH() 関数はどのように文字列の長さを測定しますか?

MySQL LENGTH() 関数はどのように文字列の長さを測定しますか?

WBOY
WBOY転載
2023-09-02 16:45:021492ブラウズ

MySQL LENGTH() 函数如何测量字符串长度?

MySQL LENGTH() 関数は文字列の長さを「バイト」単位で測定します。これは、マルチバイトセーフではないことを意味します。 CHAR_LENGTH() や CHARACTER_LENGTH() などのマルチバイト セーフ関数と LENGTH() 関数の結果の違いは、ほとんどの文字が 2 バイトでエンコードされる Unicode と、バイト数が異なる UTF-8 に特に関係します。 。たとえば、文字列に 4 つの 2 バイト文字が含まれている場合、LENGTH() 関数は 8 を返し、CHAR_LENGTH() または CHARACTER_LENGTH() 関数は 4 を返します。次の例に示すように、

Example

mysql> Select LENGTH('tutorialspoint');
+--------------------------+
| LENGTH('tutorialspoint') |
+--------------------------+
|                       14 |
+--------------------------+
1 row in set (0.00 sec)

上記の結果セットは、文字列「tutorialspoint」の長さが Unicode 文字に変換されていないため、14 であることを示しています。次のクエリは、文字列を Unicode 文字に変換します。-

mysql> SET @A = CONVERT('tutorialspoint' USING ucs2);
Query OK, 0 rows affected (0.02 sec)

文字列を Unicode に変換すると、結果は 14 ではなく 28 になります。これは、以下に示すように、Unicode では 1 文字が 2 バイトを占有するためです。-

mysql> Select LENGTH(@A);
+------------+
| LENGTH(@A) |
+------------+
|         28 |
+------------+
1 row in set (0.00 sec)

ただし、CHAR_LENGTH() は、以下に示すようにマルチバイト安全な関数であるため、結果 14 を返します-

mysql> Select CHAR_LENGTH(@A);
+-----------------+
| CHAR_LENGTH(@A) |
+-----------------+
|              14 |
+-----------------+
1 row in set (0.00 sec)

以上がMySQL LENGTH() 関数はどのように文字列の長さを測定しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。