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

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

WBOY
リリース: 2023-09-02 16:45:02
転載
1496 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート