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

MariaDBでのUNCOMPRESS()のしくみ

    MariaDBでは、UNCOMPRESS() COMPRESS()によって圧縮された文字列を解凍する組み込み関数です。 機能。

    構文

    構文は次のようになります:

    UNCOMPRESS(string_to_uncompress)

    string_to_uncompressの場所 解凍する文字列です。

    基本的な例は次のとおりです。

    SELECT UNCOMPRESS(COMPRESS('Marching on'));

    結果:

    +-------------------------------------+
    | UNCOMPRESS(COMPRESS('Marching on')) |
    +-------------------------------------+
    | Marching on                         |
    +-------------------------------------+

    サイズの確認

    基本的な例は次のとおりです。

    SELECT
        LENGTH(REPEAT('z', 50)) AS "Uncompressed",
        LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed",
        LENGTH(UNCOMPRESS(COMPRESS(REPEAT('z', 50)))) AS "Uncompressed";

    結果:

    +--------------+------------+--------------+
    | Uncompressed | Compressed | Uncompressed |
    +--------------+------------+--------------+
    |           50 |         16 |           50 |
    +--------------+------------+--------------+

    ここでは、LENGTH()を使用しました 非圧縮文字列と圧縮文字列の長さをそれぞれバイト単位で取得する関数。 REPEAT()を使用しました 圧縮する前に同じ文字を50回繰り返す関数。

    著作権記号(©)を使用する別の例を次に示します。 )、これは2バイト文字です:

    SELECT
        LENGTH(REPEAT('©', 50)) AS "Uncompressed",
        LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed",
        LENGTH(UNCOMPRESS(COMPRESS(REPEAT('©', 50)))) AS "Uncompressed";

    結果:

    +--------------+------------+--------------+
    | Uncompressed | Compressed | Uncompressed |
    +--------------+------------+--------------+
    |          100 |         17 |          100 |
    +--------------+------------+--------------+

    これが3バイト文字を使用するものです:

    SELECT
        LENGTH(REPEAT('อ', 50)) AS "Uncompressed",
        LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed",
        LENGTH(UNCOMPRESS(COMPRESS(REPEAT('อ', 50)))) AS "Uncompressed";

    結果:

    +--------------+------------+--------------+
    | Uncompressed | Compressed | Uncompressed |
    +--------------+------------+--------------+
    |          150 |         18 |          150 |
    +--------------+------------+--------------+

    ヌル引数

    nullを渡す nullを返します :

    SELECT UNCOMPRESS(null);

    結果:

    +------------------+
    | UNCOMPRESS(null) |
    +------------------+
    | NULL             |
    +------------------+

    引数がありません

    UNCOMPRESS()を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:

    SELECT UNCOMPRESS();

    結果:

    ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNCOMPRESS'

    圧縮を確認する

    UNCOMPRESS() 関数を使用するには、MariaDBがzlibなどの圧縮ライブラリでコンパイルされている必要があります。 MariaDBがそのような圧縮ライブラリでコンパイルされていない場合は、UNCOMPRESS() nullを返します 。

    have_compressを確認できます サーバーがzlib圧縮ライブラリにアクセスできるかどうかを確認するシステム変数:

    SELECT @@have_compress;

    結果:

    +-----------------+
    | @@have_compress |
    +-----------------+
    | YES             |
    +-----------------+

    この場合、サーバーはzlib圧縮ライブラリにアクセスでき、結果はYESになります。 。

    サーバーがzlib圧縮ライブラリにアクセスできない場合、結果はNOになります。 。


    1. 統計がロックされているテーブルを見つける方法

    2. 場合によっては、列をインプレースでアップサイズできます

    3. Oracle Data Integrator(ODI)

    4. SQLでトリガー