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

MySQLでのEXPORT_SET()関数のしくみ

    MySQL EXPORT_SET() 関数は、数値のビットを表す文字列を返します。

    関数が文字列を出力する方法をカスタマイズすることができます。この関数は、これを可能にするいくつかの引数を受け入れます。関数を呼び出すときは、問題の番号と、結果の表示方法を決定する引数を指定します。

    構文

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

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

    議論の説明は次のとおりです:

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

    例1-基本的な使用法

    この関数の基本的な使用法を示す例を次に示します。

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

    結果:

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

    この結果を理解するには、9の数値を理解する必要があります。 ビットで表されます。これを行うには、BIN()を使用できます 数値9のバイナリ表現を出力する関数。

    SELECT BIN(9);
    

    結果:

    +--------+
    | BIN(9) |
    +--------+
    | 1001   |
    +--------+
    

    したがって、9のバイナリ表現は1001であることがわかります。 。各1 on ビット(設定されている)と各0 オフです ビット(設定されていません)。

    例2–2番目と3番目の引数を変更する

    前の例を取り上げて、2番目と3番目の引数を変更できます。

    SELECT EXPORT_SET(9,'Y','N',',',4);
    

    結果:

    +-----------------------------+
    | EXPORT_SET(9,'Y','N',',',4) |
    +-----------------------------+
    | Y,N,N,Y                     |
    +-----------------------------+
    

    だから今、各 少し、 Y を取得します 、および各オフ ビットは N を返します 。

    1と0が返されるように変更することもできます:

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

    結果:

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

    例3– 4番目の引数(区切り文字)を変更する

    前の例では、区切り文字としてコンマを明示的に指定しました。これはデフォルト値でもあります。

    必要に応じて、セパレータを別のものに変更できます。

    SELECT EXPORT_SET(9,1,0,'-',4);
    

    結果:

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

    空の文字列を区切り文字として指定すると、次のようになります。

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

    結果:

    +------------------------+
    | EXPORT_SET(9,1,0,'',4) |
    +------------------------+
    | 1001                   |
    +------------------------+
    

    例4–5番目の引数を変更する

    5番目の引数は、調べるビット数を指定します。前の例では、4を使用しました 値として、4ビットのみが調べられました(そして返されました)。 4番目の引数として別の値を指定することにより、必要に応じてこれを増減できます。

    SELECT EXPORT_SET(9,1,0,'-',10);
    

    結果:

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

    この例では、調査するビット数を10に増やしました。

    ビットは右から左に調べられるので、この例の余分なゼロは実際には上位のゼロ用であることを忘れないでください。したがって、実際のバイナリ表現とは逆の順序になります。

    これが私の意味を示す例です:

    SELECT 
      BIN(567),
      EXPORT_SET(567,1,0,'',10);
    

    結果:

    +------------+---------------------------+
    | BIN(567)   | EXPORT_SET(567,1,0,'',10) |
    +------------+---------------------------+
    | 1000110111 | 1110110001                |
    +------------+---------------------------+
    

    この場合、それらは鏡像のように見えます。基本的に、EXPORT_SET()の結果 BIN()とは逆の順序です 。

    5番目の引数のデフォルト値は64であるため、この引数を省略すると、それが検査されるビット数になります。

    SELECT EXPORT_SET(9,1,0,'-');
    

    結果:

    +---------------------------------------------------------------------------------------------------------------------------------+
    | 1-0-0-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-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 |
    +---------------------------------------------------------------------------------------------------------------------------------+
    

    これはサイレントに64にクリップされるため、この範囲外の値を指定すると、64にクリップされます。

    SELECT EXPORT_SET(9,1,0,'-',500);
    

    結果:

    +---------------------------------------------------------------------------------------------------------------------------------+
    | 1-0-0-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-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 |
    +---------------------------------------------------------------------------------------------------------------------------------+
    

    これは符号なし整数なので、負の値を使用しても同じ結果になります:

    SELECT EXPORT_SET(9,1,0,'-',-4);
    

    結果:

    +---------------------------------------------------------------------------------------------------------------------------------+
    | 1-0-0-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-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 |
    +---------------------------------------------------------------------------------------------------------------------------------+
    

    例5–デフォルト値の使用

    デフォルト値を使用するために、最後の2つの引数を省略できます。

    SELECT EXPORT_SET(9,'On','Off');
    

    結果:

    +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | On,Off,Off,On,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off |
    +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    

    1. PostgreSQL DESCRIBE TABLE

    2. PL / pgSQLで最も近いX分に丸める方法は?

    3. Windows Azure VMのパフォーマンスの比較、パート2

    4. プライマリの代わりに2つの外部キー