MariaDBでは、UNCOMPRESSED_LENGTH()
COMPRESS()
で圧縮される前の圧縮された文字列の長さを返す組み込み関数です。 機能。
構文
構文は次のようになります:
UNCOMPRESSED_LENGTH(compressed_string)
compressed_string
の場所 は圧縮された文字列です。
例
基本的な例は次のとおりです。
SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('z', 50)));
結果:
+------------------------------------------------+ | UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('z', 50))) | +------------------------------------------------+ | 50 | +------------------------------------------------+
ここでは、REPEAT()
を使用しました 同じ文字を50回繰り返す関数。文字を繰り返すと、圧縮の候補になります。
圧縮された文字列との比較
圧縮された文字列と比較すると、ここでも同じです:
SELECT
LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed",
UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('z', 50))) AS "Uncompressed";
結果:
+------------+--------------+ | Compressed | Uncompressed | +------------+--------------+ | 16 | 50 | +------------+--------------+
バイト長と文字長
UNCOMPRESSED_LENGTH()
バイトでの長さに関するレポート (文字の長さだけではなく)
これは、著作権記号(©
などのマルチバイト文字を使用してテストできます。 )、それをLENGTH()
などの関数に渡します 長さをバイト単位で取得するには、CHAR_LENGTH()
文字の長さを取得するには:
SELECT
UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('©', 50))) AS "UNCOMPRESSED_LENGTH()",
LENGTH(REPEAT('©', 50)) AS "Uncompressed (Bytes)",
LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed (Bytes)",
CHAR_LENGTH(REPEAT('©', 50)) AS "Uncompressed (Char)",
CHAR_LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed (Char)";
結果(垂直出力を使用):
UNCOMPRESSED_LENGTH(): 100 Uncompressed (Bytes): 100 Compressed (Bytes): 17 Uncompressed (Char): 50 Compressed (Char): 17
タイ語の文字を使用する別の例を次に示します。
SELECT
UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('อ', 50))) AS "UNCOMPRESSED_LENGTH()",
LENGTH(REPEAT('อ', 50)) AS "Uncompressed (Bytes)",
LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed (Bytes)",
CHAR_LENGTH(REPEAT('อ', 50)) AS "Uncompressed (Char)",
CHAR_LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed (Char)";
結果(垂直出力を使用):
UNCOMPRESSED_LENGTH(): 150 Uncompressed (Bytes): 150 Compressed (Bytes): 18 Uncompressed (Char): 50 Compressed (Char): 18
このタイ文字は3バイトを使用するため、文字列の長さが50文字しかない場合でも、非圧縮文字列は150バイトになります。
ヌル引数
null
を渡す null
を返します :
SELECT UNCOMPRESSED_LENGTH(null);
結果:
+---------------------------+ | UNCOMPRESSED_LENGTH(null) | +---------------------------+ | NULL | +---------------------------+
引数がありません
UNCOMPRESSED_LENGTH()
を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:
SELECT UNCOMPRESSED_LENGTH();
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNCOMPRESSED_LENGTH'