MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのEXPORT_SET()関数とは?仕組みと使い方をわかりやすく解説

EXPORT_SET()は、MySQLの文字列関数の一つで、検索目的にも利用されます。以下の構文を見ることで、この関数の動作を理解しやすくなります。

構文

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

この構文における各引数の意味は次のとおりです。

  • bits(第1引数):整数値をビット列に変換したもの。各ビットが1か0かを判定する対象となります。
  • 'On'(第2引数):クォートで囲んだ任意の値。判定対象のビットが1だった場合に返されます。
  • 'Off'(第3引数):クォートで囲んだ任意の値。判定対象のビットが0だった場合に返されます。
  • separator(第4引数):出力結果として返される各値の間に挿入される区切り文字。任意の文字や値をクォートで囲んで指定できます。
  • number_of_bits(第5引数):1か0かの判定を行うビット数を指定します。

EXPORT_SET()関数の動作の流れ

EXPORT_SET()関数は、次のような手順で動作します。

  • まず、第1引数として与えられた整数値がビット列(0と1の並び)に変換されます。続いて、各ビットが1か0かの判定が行われます。この判定は右から左の順で進みます。
  • 判定の結果、ビットが1であれば第2引数の'on'が、0であれば第3引数の'off'が返されることになります。
  • この判定は、第5引数で指定されたビット数に達するまで続けられます。
  • 最後に、MySQLはこれらの結果をもとに出力を生成し、各値の間に区切り文字を挿入します。なお、出力される値の並び順は左から右です。

実行例

mysql> Select EXPORT_SET(8, '1','0',',', 8);

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

1 row in set (0.00 sec)

mysql> Select EXPORT_SET(8, '1','0',',', 4);

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

1 row in set (0.00 sec)

どちらの例でも、第1引数として8を指定しています。この8はまずビット列「1000」に変換され、1つ目の例では8ビット、2つ目の例では4ビットまでの範囲で1か0かの判定が行われます。これは、それぞれの例で第5引数に8と4が指定されているためです。また、出力結果にはカンマ(,)が区切り文字として使われていますが、これは両方の例で第4引数にカンマを指定しているからです。

ビットの判定は右から左の順で行われる点に注目しましょう。例の「1000」では、最も右側のビットが0のため第3引数の'0'が返され、次の2桁も0なのでさらに2つの'0'が返ります。そして4桁目が1のため、ここで初めて第2引数の'1'が返されるのです。2つ目の例では判定が4桁で打ち切られるため出力も4桁になりますが、1つ目の例では8桁まで判定が行われるため、出力も8桁になっています。最終的な出力は左から右の順に並ぶため、1つ目の例では「0,0,0,1,0,0,0,0」、2つ目の例では「0,0,0,1」と表示されるわけです。

  1. Pythonの関数における変数スコープの仕組みとは?globalキーワードの使い方も解説

    Pythonでは、変数は値を代入した時点で定義されます。C言語など多くの言語とは異なり、事前に宣言しておく必要はなく、いきなり変数を使い始めることができるのが特徴です。x = 141ファイルやモジュールのトップレベル(最上位)で定義された変数は「グローバルスコープ」に属し、関数の中からもアクセスできます。なお、良い設計の原則として、変数はその役割を果たすために必要な最小限のスコープにとどめておくことが推奨されています。例:ローカル変数とグローバル変数の違い次のコードを見てみましょう。x = 141 def foo(): x = 424 # ローカル変数 print(x)

  2. Pythonで関数を引数として渡す方法をわかりやすく解説

    Pythonでは、関数もオブジェクトの一つとして扱われるため、他の関数の引数として渡すことができます。この仕組みを活用すると、柔軟で再利用性の高いコードを書くことができます。map()関数を使った例Pythonが標準で提供している代表的な例が、第一引数に関数を受け取る map() 関数です。map(function, iterable, ...) — iterable(イテラブル)の各要素に対してfunctionを適用し、その結果を返します。もちろん、独自に定義したカスタム関数でも、引数として関数を受け取るように実装できます。自作関数sqr(x)を引数として渡すここでは、リストの各要素を2乗す