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()と呼ばれます。 。