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