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
を使用しています および0
、BIN()
と同様です 関数は戻りますが、セパレータが追加されています(そして逆になっています)。
セパレータを変更する
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'