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

MariaDBでのUNHEX()のしくみ

    MariaDBでは、UNHEX() HEX()の逆演算を実行する組み込みの文字列関数です。 機能。

    一方、HEX() 関数は、指定された文字列の16進表現であるUNHEX()を返します。 関数は、指定された16進値の文字列表現を返します。

    具体的には、UNHEX() 引数内の16進数の各ペアを数値として解釈し、それを数値で表される文字に変換します。

    結果はバイナリ文字列として返されます。

    構文

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

    UNHEX(str)

    str は「16進されていない」16進値です。

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

    SELECT UNHEX('61');

    結果:

    +-------------+
    | UNHEX('61') |
    +-------------+
    | a           |
    +-------------+

    小文字の16進表現a 61です 、など、61を渡すことで UNHEX()へ 関数の場合、小文字のaを取得します 。

    次に、さらにいくつかの16進値を実行する例を示します。

    SELECT 
        UNHEX('61'),
        UNHEX('6161'),
        UNHEX('41'),
        UNHEX('4141'),
        UNHEX('62'),
        UNHEX('6262'),
        UNHEX('42'),
        UNHEX('4242'),
        UNHEX('436174'),
        UNHEX('446F67'),
        UNHEX('50617773202620436C617773'),
        UNHEX('5A65627261');

    結果(垂直出力を使用):

                          UNHEX('61'): a
                        UNHEX('6161'): aa
                          UNHEX('41'): A
                        UNHEX('4141'): AA
                          UNHEX('62'): b
                        UNHEX('6262'): bb
                          UNHEX('42'): B
                        UNHEX('4242'): BB
                      UNHEX('436174'): Cat
                      UNHEX('446F67'): Dog
    UNHEX('50617773202620436C617773'): Paws & Claws
                  UNHEX('5A65627261'): Zebra

    HEX()との比較

    HEX()をネストする例を次に示します。 UNHEX()内 元の文字列を返すには:

    SELECT 
        HEX('Homer Jay'),
        UNHEX(HEX('Homer Jay'));

    結果:

    +--------------------+-------------------------+
    | HEX('Homer Jay')   | UNHEX(HEX('Homer Jay')) |
    +--------------------+-------------------------+
    | 486F6D6572204A6179 | Homer Jay               |
    +--------------------+-------------------------+

    ただし、UNHEX() 結果をバイナリ文字列として返します:

    SELECT 
        COLLATION('Homer Jay') AS "Literal",
        COLLATION(HEX('Homer Jay')) AS "HEX()",
        COLLATION(UNHEX(HEX('Homer Jay'))) AS "UNHEX()";

    結果:

    +-----------------+-----------------+---------+
    | Literal         | HEX()           | UNHEX() |
    +-----------------+-----------------+---------+
    | utf8_general_ci | utf8_general_ci | binary  |
    +-----------------+-----------------+---------+

    ヌル引数

    nullを渡す UNHEX()へ 結果はnull

    SELECT UNHEX(null);

    結果:

    +-------------+
    | UNHEX(null) |
    +-------------+
    | NULL        |
    +-------------+

    引数を渡さない

    UNHEX()を呼び出す 引数を渡さないとエラーが発生します:

    SELECT UNHEX();

    結果:

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

    1. 1000を超える値をOracleIN句に入れる方法

    2. Oracleは全文検索をサポートしていますか?

    3. Oracleで数値を文字列に変換する方法は?

    4. Oraclecurrent_timestampから秒への変換