メインコンテンツまでスキップ
に最終更新

MAKE_SET

説明​

MAKE_SET 関数は、ビットマスク(bit)に基づいて複数の文字列引数から文字列を選択し、結合します。対応するビットが 1 の文字列をすべて含む、カンマ区切りの文字列を返します。

動作は MySQL の MAKE_SET と同じです。

構文​

MAKE_SET(<bit>, <str1>[, <str2>, ...])

パラメータ​

パラメータ説明
<bit>どの文字列を選択するかを各ビットで指定するビットマスク。型:BIGINT
<str1>, <str2>, ...結合対象の文字列引数(可変長引数)。型:VARCHAR

戻り値​

カンマ区切りの文字列を VARCHAR 型で返します。

特殊なケース:

  • <bit> が NULL の場合は NULL を返します
  • 1 に設定されたビットに対応する文字列が NULL の場合は、その文字列をスキップします
  • ビットに対応する引数が存在しない場合は、そのビットを無視します
  • ビットは右から左へ数え、ビット 0 は最初の文字列引数に対応します
  • <bit> が 0 の場合は空文字列を返します

例​

  1. 基本的な使い方:bit = 3(二進数で 011、ビット 0 とビット 1 を選択)
SELECT make_set(3, 'dog', 'cat', 'bird');
+-----------------------------------+
| make_set(3, 'dog', 'cat', 'bird') |
+-----------------------------------+
| dog,cat |
+-----------------------------------+
  1. NULL 値をスキップ:bit = 5(二進数で 101、ビット 0 とビット 2 を選択)
SELECT make_set(5, NULL, 'warm', 'hot');
+---------------------------------+
| make_set(5, NULL, 'warm', 'hot') |
+---------------------------------+
| hot |
+---------------------------------+
  1. bit が 0 の場合:文字列を選択しない
SELECT make_set(0, 'hello', 'world');
+--------------------------------+
| make_set(0, 'hello', 'world') |
+--------------------------------+
| |
+--------------------------------+
  1. NULL 値の処理
SELECT make_set(NULL, 'a', 'b', 'c');
+-------------------------------+
| make_set(NULL, 'a', 'b', 'c') |
+-------------------------------+
| NULL |
+-------------------------------+
  1. ビットが引数の範囲を超える場合:bit = 15(二進数で 1111、4 ビットを選択するが、引数は 2 つのみ)
SELECT make_set(15, 'first', 'second');
+-------------------------------------+
| make_set(15, 'first', 'second') |
+-------------------------------------+
| first,second |
+-------------------------------------+
  1. UTF-8 の特殊文字への対応
SELECT make_set(7, 'ṭṛì', 'ḍḍumai', 'test');
+------------------------------------------+
| make_set(7, 'ṭṛì', 'ḍḍumai', 'test') |
+------------------------------------------+
| ṭṛì,ḍḍumai,test |
+------------------------------------------+

キーワード​

MAKE_SET