MySQLでは、CHAR_LENGTH() 関数は、文字で測定された文字列の長さを返します。 MySQLにはCHARACTER_LENGTH()もあります 、これはCHAR_LENGTH()の同義語です 。
次に例を示します:
SELECT CHAR_LENGTH('Lit');
結果は次のとおりです。
+--------------------+
| CHAR_LENGTH('Lit') |
+--------------------+
| 3 |
+--------------------+
トレーリングブランク
CHAR_LENGTH()に注意してください 計算に末尾の空白(文字列の最後のスペースなど)が含まれます。
したがって、前の例の最後にスペースを追加すると、次のようになります。
SELECT CHAR_LENGTH('Lit');
結果は次のとおりです。
+---------------------+
| CHAR_LENGTH('Lit ') |
+---------------------+
| 4 |
+---------------------+
ただし、TRIM()を追加することで、その末尾のスペースをいつでも削除できます。 ミックスに機能する:
SELECT CHAR_LENGTH(TRIM('Lit '));
結果は次のとおりです。
+---------------------------+
| CHAR_LENGTH(TRIM('Lit ')) |
+---------------------------+
| 3 |
+---------------------------+
リーディングブランク
先頭の空白についても同じです。したがって、 startにスペースを追加すると 代わりに文字列の:
SELECT CHAR_LENGTH('Lit');
同じ結果が得られます:
+---------------------+
| CHAR_LENGTH('Lit ') |
+---------------------+
| 4 |
+---------------------+
データ型
文字列がどのデータ型として保存されているかは関係ありませんが、同じ結果が返されます。これは、LENGTH()とは対照的です。 関数。データがUnicode文字列として格納されている場合に2倍の文字数を返します。
次の例では、ArtistName列は varchar(255)を使用しています :
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
結果は次のとおりです。
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
そして、ArtistNameを変更すると Unicodeを使用する列:
ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) unicode;
そして、同じクエリをもう一度実行します:
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
それでも同じ結果が得られます:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
ただし、LENGTH()を使用した場合 関数の場合、結果は6になります。これは、Unicode文字列が1文字あたり2バイトを格納し、LENGTH()が格納されるためです。 関数は、バイト単位で測定された長さを返します。