メインコンテンツまでスキップ
バージョン: 26.x

MAKE_SET

説明

MAKE_SET関数は、ビットマスク(ビット)に基づいて複数の文字列パラメータから文字列を選択して結合します。対応するビットが1である全ての文字列を含むカンマ区切りの文字列セットを返します。

動作はMySQLのMAKE_SETと一致します。

構文

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

パラメータ

Parameterデスクリプション
<bit>ビットマスク値、バイナリビットが選択する文字列を指定します。型: BIGINT
<str1>, <str2>, ...結合される文字列パラメータ(可変引数)。型: VARCHAR

Return Value

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

特殊なケース:

  • <bit>がNULLの場合、NULLを返します
  • 1に設定されたビットに対応する文字列がNULLの場合、その文字列をスキップします
  • 対応するビットがパラメータ範囲を超える場合、そのビットを無視します
  • バイナリビットは右から左に数え、ビット0は最初の文字列パラメータに対応します
  • <bit>が0の場合、空文字列を返します

Examples

  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 (binary 101, bit 0とbit 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 |
+------------------------------------------+

Keywords

MAKE_SET