Перейти к содержимому
Последнее обновление

MAKE_SET

Описание​

Функция MAKE_SET выбирает и объединяет строки из нескольких строковых параметров на основе битовой маски (bit). Возвращает набор строк, разделённых запятыми, в который входят все строки, для которых соответствующий бит равен 1.

Поведение соответствует функции MAKE_SET в MySQL.

Синтаксис​

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