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()
が格納されるためです。 関数は、バイト単位で測定された長さを返します。