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

MariaDBでのHEX()のしくみ

    MariaDBでは、HEX() は、引数の16進文字列表現を返す組み込みの文字列関数です。

    これは次のように機能します:

    • 引数が数値の場合、HEX() 数値の16進値の文字列表現を返します。
    • 引数が文字列の場合、HEX() 文字列の16進文字列表現を返します。ここで、文字列内の各文字の各バイトは2桁の16進数字に変換されます。
    • MariaDB 10.5.0以降、HEX() INET6を使用 引数は、基になる16バイトのバイナリ文字列の16進表現を返します。

    構文

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

    HEX(N_or_S)

    N_or_Sの場所 は数字または文字列です。

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

    SELECT HEX(15);

    結果:

    +---------+
    | HEX(15) |
    +---------+
    | F       |
    +---------+

    ここでは、15の16進値を取得しました。 、これはF

    10進数では、カウントは次のようになります:0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15。

    ただし、16進数では、0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、Fのようになります。

    したがって、数値が0〜9の場合、10進数と同じ値になります。

    16進システムがその値をどのようにインクリメントするかを示す別の例を次に示します。

    SELECT 
        HEX(0),
        HEX(1),
        HEX(2),
        HEX(3),
        HEX(4),
        HEX(5),
        HEX(6),
        HEX(7),
        HEX(8),
        HEX(9),
        HEX(10),
        HEX(11),
        HEX(12),
        HEX(13),
        HEX(14),
        HEX(15),
        HEX(16),
        HEX(17),
        HEX(18),
        HEX(19),
        HEX(20),
        HEX(21),
        HEX(22),
        HEX(23),
        HEX(24),
        HEX(25),
        HEX(26),
        HEX(27),
        HEX(28),
        HEX(29),
        HEX(30),
        HEX(31),
        HEX(32),
        HEX(789456768);

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

            HEX(0): 0
            HEX(1): 1
            HEX(2): 2
            HEX(3): 3
            HEX(4): 4
            HEX(5): 5
            HEX(6): 6
            HEX(7): 7
            HEX(8): 8
            HEX(9): 9
           HEX(10): A
           HEX(11): B
           HEX(12): C
           HEX(13): D
           HEX(14): E
           HEX(15): F
           HEX(16): 10
           HEX(17): 11
           HEX(18): 12
           HEX(19): 13
           HEX(20): 14
           HEX(21): 15
           HEX(22): 16
           HEX(23): 17
           HEX(24): 18
           HEX(25): 19
           HEX(26): 1A
           HEX(27): 1B
           HEX(28): 1C
           HEX(29): 1D
           HEX(30): 1E
           HEX(31): 1F
           HEX(32): 20
    HEX(789456768): 2F0E2780

    文字列

    前述のように、引数が文字列の場合、HEX() 文字列の16進文字列表現を返します。ここで、文字列内の各文字の各バイトは2桁の16進数字に変換されます。

    例:

    SELECT 
        HEX('a'),
        HEX('aa'),
        HEX('A'),
        HEX('AA'),
        HEX('b'),
        HEX('bb'),
        HEX('B'),
        HEX('BB'),
        HEX('Cat'),
        HEX('Dog'),
        HEX('Paws & Claws'),
        HEX('Zebra');

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

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

    INET6

    MariaDB 10.5.0以降、HEX() INET6を使用 引数は、基になる16バイトのバイナリ文字列の16進表現を返します。

    例:

    SELECT HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6));

    結果:

    +---------------------------------------------------------------+
    | HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6)) |
    +---------------------------------------------------------------+
    | 20010DB83C4D0015000000001A2F1A2B                              |
    +---------------------------------------------------------------+

    ここでも同じですが、同じIPv6アドレスの省略形を使用しています:

    SELECT HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6));

    結果:

    +---------------------------------------------------+
    | HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6)) |
    +---------------------------------------------------+
    | 20010DB83C4D0015000000001A2F1A2B                  |
    +---------------------------------------------------+

    ヌル引数

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

    SELECT HEX(null);

    結果:

    +-----------+
    | HEX(null) |
    +-----------+
    | NULL      |
    +-----------+

    引数を渡さない

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

    SELECT HEX();

    結果:

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

    1. MariaDB LOCALTIMESTAMP()の説明

    2. mysqlダンプSQLファイルをsqlite3dbにインポートできる形式に変換するスクリプト

    3. SQLiteデータベースをバックアップする

    4. MariaDBのAVG()関数