MySQLでは、OCTET_LENGTH()
関数は、バイト単位で測定された文字列の長さを返します。
この関数は、実際にはLENGTH()
の同義語です。 。
構文
基本的な構文は次のようになります:
OCTET_LENGTH(str)
str
長さを返す文字列です。
例
SELECT OCTET_LENGTH('Cat');
結果:
+---------------------+ | OCTET_LENGTH('Cat') | +---------------------+ | 3 | +---------------------+
これは、CHAR_LENGTH()
を使用した場合に得られる結果と同じです。 働き。ただし、OCTET_LENGTH()
関数は、データ型に応じて異なる結果を返す可能性があります。
データ型
データベースにクエリを実行すると、OCTET_LENGTH()
関数は、データ型に応じて異なる結果を返す可能性があります。 Unicode文字列は2倍のバイト数を返します。 UTF-8文字列は異なる場合があります。
UTF-8の使用例は次のとおりです:
SELECT CHAR_LENGTH(_utf8 '€'), OCTET_LENGTH(_utf8 '€');
結果:
+--------------------------+---------------------------+ | CHAR_LENGTH(_utf8 '€') | OCTET_LENGTH(_utf8 '€') | +--------------------------+---------------------------+ | 1 | 3 | +--------------------------+---------------------------+
この場合、文字の長さは1ですが、オクテットの長さは3バイトです。
次の例では、データベースにクエリを実行します。この場合、ArtistName
列はvarchar(255)を使用します データ型:
SELECT OCTET_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
したがって、結果は次のようになります。
+--------------------------+ | OCTET_LENGTH(ArtistName) | +--------------------------+ | 3 | +--------------------------+
ただし、列をucs2
に変更すると 、各文字は2バイトのUnicodeコードで表されるため、結果は異なります。
実例を示すために、次のようにテーブルを変更できます。
SELECT OCTET_LENGTH(ArtistName) ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;
もう一度クエリすると:
SELECT OCTET_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
結果:
+--------------------------+ | OCTET_LENGTH(ArtistName) | +--------------------------+ | 6 | +--------------------------+
トレーリングブランク
OCTET_LENGTH()
関数は、末尾の空白(文字列の最後のスペースなど)をカウントします。したがって、最初の例の最後にスペースを追加すると、次の結果が得られます。
SELECT LENGTH('Cat ');
結果:
+----------------+ | LENGTH('Cat ') | +----------------+ | 4 | +----------------+
リーディングブランク
先頭の空白(文字列の先頭のスペースなど)でも同じ結果が得られます:
SELECT LENGTH('Cat ');
結果:
+----------------+ | LENGTH(' Cat') | +----------------+ | 4 | +----------------+
もちろん、TRIM()
などの関数を使用する場合を除きます。 、RTRIM()
、またはLTRIM()
空白を削除します。
例:
SELECT LENGTH(RTRIM('Cat '));
結果:
+-----------------------+ | LENGTH(RTRIM('Cat ')) | +-----------------------+ | 3 | +-----------------------+
その他の例
さまざまな文字列の例を次に示します。
SELECT OCTET_LENGTH('Quiet Riot') AS 'Result 1', OCTET_LENGTH('') AS 'Result 2', OCTET_LENGTH('1234 7') AS 'Result 3', OCTET_LENGTH(' ') AS 'Result 4', OCTET_LENGTH(TRIM(' ')) AS 'Result 5';
結果:
+----------+----------+----------+----------+----------+ | Result 1 | Result 2 | Result 3 | Result 4 | Result 5 | +----------+----------+----------+----------+----------+ | 10 | 0 | 7 | 3 | 0 | +----------+----------+----------+----------+----------+
TRIM()
を使用したため、結果4と5は異なることに注意してください。 結果5から空白をトリミングする関数。文字列は空白のみで構成されているため、トリミングされた文字列の長さは0
です。 。
Transact-SQL(SQL Server、Azure用)には、MySQLのLENGTH()
と同様の機能があります およびOCTET_LENGTH()
関数ですが、T-SQLではDATALENGTH()
と呼ばれます 。