sql >> データベース >  >> RDS >> MariaDB

MariaDBでのCOMPRESS()のしくみ

    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になります。 。


    1. SYSが所有するオブジェクトにトリガーを作成できないのはなぜですか?

    2. T-SQLで日付と時刻の形式を変更する方法

    3. Laravel:指定されたキーが長すぎました。キーの最大長は767バイトです

    4. アーティファクトがありませんcom.microsoft.sqlserver:sqljdbc4:jar:4.0