MySQLの多くの関数の1つは、LENGTH()
です。 文字列の長さをバイト単位で返す関数。
例:
SELECT LENGTH('Lit');
結果:
+---------------+ | LENGTH('Lit') | +---------------+ | 3 | +---------------+
これは簡単な例であり、結果はCHAR_LENGTH()
を使用した場合と同じです。 働き。ただし、LENGTH()
関数は、データ型に応じて異なる結果を返す可能性があります。
データ型
データベースにクエリを実行すると、LENGTH()
関数は、データ型に応じて異なる結果を返す可能性があります。 Unicode文字列は2倍のバイト数を返します。 UTF-8文字列は異なる場合があります。
UTF-8の使用例は次のとおりです:
SELECT LENGTH(_utf8 '€');
結果:
+---------------------+ | LENGTH(_utf8 '€') | +---------------------+ | 3 | +---------------------+
この場合、ユーロ記号は3バイトを使用します。
次の例では、データベースにクエリを実行します。この場合、ArtistName
列はvarchar(255)を使用します データ型:
SELECT LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
したがって、結果は次のようになります。
+--------------------+ | LENGTH(ArtistName) | +--------------------+ | 3 | +--------------------+
ただし、列をucs2
に変更すると 、各文字は2バイトのUnicodeコードで表されるため、結果は異なります。
実例を示すために、次のようにテーブルを変更できます。
SELECT LENGTH(ArtistName) ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;
もう一度クエリすると:
SELECT LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
結果:
+--------------------+ | LENGTH(ArtistName) | +--------------------+ | 6 | +--------------------+
トレーリングブランク
LENGTH()
関数は、末尾の空白(文字列の最後のスペースなど)をカウントします。したがって、最初の例の最後にスペースを追加すると、次の結果が得られます。
SELECT LENGTH('Lit');
結果:
+----------------+ | LENGTH('Lit ') | +----------------+ | 4 | +----------------+
リーディングブランク
先頭の空白(文字列の先頭のスペースなど)でも同じ結果が得られます:
SELECT LENGTH('Lit');
結果:
+----------------+ | LENGTH('Lit ') | +----------------+ | 4 | +----------------+
Transact-SQL(SQL Server、Azureの場合)にも同様の機能がありますが、T-SQLではDATALENGTH()
と呼ばれます。 。