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

MariaDBでのEXPORT_SET()のしくみ

    MariaDBでは、EXPORT_SET() 指定された値のビットを反映する文字列を返す組み込みの文字列関数です。指定された値に設定されたすべてのビットに対して「オン」文字列を取得し、値に設定されていないすべてのビットに対して「オフ」文字列を取得します。

    少なくとも3つの引数と、2つのオプションの引数を受け入れます。

    構文

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

    EXPORT_SET(bits, on, off[, separator[, number_of_bits]])

    次の表に、これらの引数の説明を示します。

    bits 結果を返す値。整数として提供されますが、ビットに変換されます。この値に設定されているすべてのビットについて、 onを取得します 文字列、および値に設定されていないすべてのビットについて、オフを取得します ストリング。ビットは右から左に(下位ビットから上位ビットに)調べられます。
    on 任意のに対して返される文字列 ビット。
    off offに対して返される文字列 ビット。
    separator 使用するセパレーターを指定するために使用できるオプションの引数。デフォルト値はコンマ文字です。したがって、この引数を指定しない場合は、区切り文字としてカンマが使用されます。
    number_of_bits 調べるビット数。デフォルト値は64です。より大きな値を指定すると、64よりも大きい場合、これはサイレントに64にクリップされます。

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

    SELECT EXPORT_SET(13,'On','Off',',',4);

    結果:

    +---------------------------------+
    | EXPORT_SET(13,'On','Off',',',4) |
    +---------------------------------+
    | On,Off,On,On                    |
    +---------------------------------+

    1番目、3番目、4番目のビットが設定されていることがわかりますが、2番目のビットは設定されていません。

    BIN()を使用できます 同様の結果を返す関数ですが、逆の順序です:

    SELECT BIN(13);

    結果:

    +---------+
    | BIN(13) |
    +---------+
    | 1101    |
    +---------+

    BIN() 関数は、指定されたlonglongのバイナリ値の文字列表現を返します。この例では、3つの1を返しました。 s。

    EXPORT_SET()で たとえば、onを指定しました およびoff 1を表すために使用する必要があります および0 それぞれ。ただし、これは変更できます(以下)。

    また、EXPORT_SET()を使用します 、文字列は左から右に結果に追加されます。したがって、EXPORT_SET()の結果 BIN()の結果の鏡像のように見えます 。

    オン/オフ値の変更

    ここでも同じですが、今回はonに別の文字列を使用します およびoff 状態。

    SELECT EXPORT_SET(7,'1','0',',',4);

    結果:

    +-----------------------------+
    | EXPORT_SET(7,'1','0',',',4) |
    +-----------------------------+
    | 1,1,1,0                     |
    +-----------------------------+

    今回は1を使用しています および0BIN()と同様です 関数は戻りますが、セパレータが追加されています(そして逆になっています)。

    セパレータを変更する

    4番目の(オプションの)引数は、使用するセパレーターを指定します。ここに別のセパレータがあります:

    SELECT EXPORT_SET(7,'True','False','-',4);

    結果:

    +------------------------------------+
    | EXPORT_SET(7,'True','False','-',4) |
    +------------------------------------+
    | True-True-True-False               |
    +------------------------------------+

    調べるビット数を変更する

    5番目の(オプションの)引数は、調べるビット数を指定します。前の例では、調べるビット数として4を使用しました。必要に応じてこれを増やすことができます:

    SELECT EXPORT_SET(7,'1','0',',',10);

    結果:

    +------------------------------+
    | EXPORT_SET(7,'1','0',',',10) |
    +------------------------------+
    | 1,1,1,0,0,0,0,0,0,0          |
    +------------------------------+

    この場合、余分なビットのすべてが設定されるわけではありません。最初の引数の値を増やして、これが結果にどのように影響するかを確認しましょう。

    SELECT EXPORT_SET(172,'1','0',',',10);

    結果:

    +--------------------------------+
    | EXPORT_SET(172,'1','0',',',10) |
    +--------------------------------+
    | 0,0,1,1,0,1,0,1,0,0            |
    +--------------------------------+

    デフォルト値

    前述のように、4番目と5番目の引数はオプションです。これらを省略すると、デフォルト値が使用されます。

    デフォルトのビット数

    最後の引数を削除すると、64ビットが調べられます:

    SELECT EXPORT_SET(172,'1','0','');

    結果:

    +------------------------------------------------------------------+
    | EXPORT_SET(172,'1','0','')                                       |
    +------------------------------------------------------------------+
    | 0011010100000000000000000000000000000000000000000000000000000000 |
    +------------------------------------------------------------------+

    この場合、出力をより簡潔にするために、セパレーターも削除しました。

    デフォルトのセパレーター

    セパレータ引数を削除することもできます。これを行うとき、EXPORT_SET() デフォルトの区切り文字としてコンマを使用します。

    SELECT EXPORT_SET(123456789,'1','0');

    結果:

    +-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+
    | EXPORT_SET(123456789,'1','0')                                                                                                   |
    +---------------------------------------------------------------------------------------------------------------------------------+
    | 1,0,1,0,1,0,0,0,1,0,1,1,0,0,1,1,1,1,0,1,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |
    +---------------------------------------------------------------------------------------------------------------------------------+

    ヌル引数

    引数のいずれかがnullの場合 、結果はnullです :

    SELECT 
        EXPORT_SET(null,'1','0') AS "1",
        EXPORT_SET(7,null,'0') AS "2",
        EXPORT_SET(7,'1',null) AS "3",
        EXPORT_SET(7,'1','0',null,4) AS "4",
        EXPORT_SET(7,'1','0',',',null) AS "5";

    結果:

    +------+------+------+------+------+
    | 1    | 2    | 3    | 4    | 5    |
    +------+------+------+------+------+
    | NULL | NULL | NULL | NULL | NULL |
    +------+------+------+------+------+

    引数がありません

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

    SELECT EXPORT_SET();

    結果:

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

    1. MariaDBで値に少なくとも1桁の数字が含まれているかどうかを検出する方法

    2. psqlクエリ結果でテーブルの境界線スタイルを変更する方法

    3. plpgsql関数の引数としてテーブル名と列名を定義しますか?

    4. テーブル内のすべての列を一覧表示するにはどうすればよいですか?