MariaDBでは、COMPRESS()
文字列を圧縮し、結果をバイナリ文字列として返す組み込み関数です。
COMPRESS()
関数を使用するには、MariaDBがzlibなどの圧縮ライブラリでコンパイルされている必要があります。 MariaDBがそのような圧縮ライブラリでコンパイルされていない場合は、COMPRESS()
null
を返します 。
構文
構文は次のようになります:
COMPRESS(string_to_compress)
string_to_compress
の場所 圧縮する文字列です。
例
基本的な例は次のとおりです。
SELECT
LENGTH(REPEAT('z', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed";
結果:
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 50 | 16 | +--------------+------------+
ここでは、LENGTH()
を使用しました 非圧縮文字列と圧縮文字列の長さをそれぞれバイト単位で取得する関数。 REPEAT()
を使用しました 圧縮する前に同じ文字を50回繰り返す関数。
著作権記号(©
)を使用する別の例を次に示します。 ):
SELECT
LENGTH(REPEAT('©', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed";
結果:
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 100 | 17 | +--------------+------------+
著作権記号は2バイト文字であり、圧縮されていない長さは1バイト文字の2倍のサイズです。ただし、この2バイトの繰り返し文字列を圧縮すると、1バイト文字の繰り返しの圧縮文字列と同様のサイズになります。
これが3バイト文字を使用するものです:
SELECT
LENGTH(REPEAT('อ', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed";
結果:
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 150 | 18 | +--------------+------------+
この場合、効果はさらに大きくなります。繰り返される3バイトの文字列は、前の例で繰り返される1バイトおよび2バイトの文字列と同様のサイズに縮小されます。
ヌル引数
null
を渡す null
を返します :
SELECT COMPRESS(null);
結果:
+----------------+ | COMPRESS(null) | +----------------+ | NULL | +----------------+
引数がありません
COMPRESS()
を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:
SELECT COMPRESS();
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'COMPRESS'
圧縮を確認する
前述のように、COMPRESS()
関数を使用するには、MariaDBがzlibなどの圧縮ライブラリでコンパイルされている必要があります。 MariaDBがそのような圧縮ライブラリでコンパイルされていない場合は、COMPRESS()
null
を返します 。
have_compress
を確認できます サーバーがzlib圧縮ライブラリにアクセスできるかどうかを確認するシステム変数:
SELECT @@have_compress;
結果:
+-----------------+ | @@have_compress | +-----------------+ | YES | +-----------------+
この場合、サーバーはzlib圧縮ライブラリにアクセスでき、結果はYES
になります。 。
サーバーがzlib圧縮ライブラリにアクセスできない場合、結果はNO
になります。 。