MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのLENGTH()関数による文字列の長さの測定方法とは?

MySQLのLENGTH()関数は、文字列の長さを「バイト数」で測定します。そのため、マルチバイトセーフ(マルチバイト対応)ではありません。CHAR_LENGTH()やCHARACTER_LENGTH()といったマルチバイトセーフな関数との結果の違いは、ほとんどの文字が2バイトでエンコードされるUnicodeや、文字ごとにバイト数が異なるUTF-8を扱う場合に特に重要になります。

たとえば、2バイト文字が4つ含まれる文字列の場合、LENGTH()関数は「8」を返しますが、CHAR_LENGTH()またはCHARACTER_LENGTH()関数は「4」を返します。以下の例で実際に確認してみましょう。

実行例

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

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

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

文字列をUnicodeに変換すると、LENGTH()関数の結果は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)

まとめ

LENGTH()関数は文字列の長さをバイト数で返し、CHAR_LENGTH()関数は文字数を返します。日本語をはじめとするマルチバイト文字を扱う場合には、意図した通りの結果を得るためにCHAR_LENGTH()やCHARACTER_LENGTH()を使用することをおすすめします。

  1. C#で文字列の長さを取得する方法を解説!String.Lengthプロパティの使い方

    C#で文字列の長さを取得する基本 C#で文字列の長さ(文字数)を取得するには、String.Lengthプロパティを使用します。これは最もシンプルで一般的な方法です。 str.Length Lengthプロパティは、指定された文字列に含まれる文字数を計算して返します。例えば、文字列「Amit」の場合は4文字となるため、Lengthプロパティの戻り値は「4」になります。 string str = Amit; サンプルコード 以下は、C#で文字列の長さを計算して表示するプログラムの完全な例です。 using System; using System.Collections; namespace

  2. 【初心者向け】Pythonで文字列の長さを取得する方法をわかりやすく解説

    Pythonで文字列の長さを取得する基本:len()関数Pythonには、文字列やリスト、タプルといった複合オブジェクトの長さ(要素数)を取得できる組み込み関数 len() が用意されています。文字列の長さを知りたい場合は、対象の文字列をそのまま len() の引数として渡すだけでOKです。print(len(abcdefghijklmnopqrstuvwxyz))出力結果:26変数に格納した文字列の長さを取得する実際の開発では、変数に代入した文字列の長さを調べる場面が多いでしょう。次のように、変数を len() に渡すだけで簡単に取得できます。text = Hello, Python! pr