Последнее обновление
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, возвращается пустая строка
Примеры
- Базовое использование: bit = 3 (двоичное представление 011, выбираются биты 0 и 1)
SELECT make_set(3, 'dog', 'cat', 'bird');
+-----------------------------------+
| make_set(3, 'dog', 'cat', 'bird') |
+-----------------------------------+
| dog,cat |
+-----------------------------------+
- Пропуск значений NULL: bit = 5 (двоичное представление 101, выбираются биты 0 и 2)
SELECT make_set(5, NULL, 'warm', 'hot');
+---------------------------------+
| make_set(5, NULL, 'warm', 'hot') |
+---------------------------------+
| hot |
+---------------------------------+
- bit равен 0: строки не выбираются
SELECT make_set(0, 'hello', 'world');
+--------------------------------+
| make_set(0, 'hello', 'world') |
+--------------------------------+
| |
+--------------------------------+
- Обработка значения NULL
SELECT make_set(NULL, 'a', 'b', 'c');
+-------------------------------+
| make_set(NULL, 'a', 'b', 'c') |
+-------------------------------+
| NULL |
+-------------------------------+
- Бит выходит за пределы списка параметров: bit = 15 (двоичное представление 1111, выбираются 4 бита, но переданы только 2 параметра)
SELECT make_set(15, 'first', 'second');
+-------------------------------------+
| make_set(15, 'first', 'second') |
+-------------------------------------+
| first,second |
+-------------------------------------+
- Поддержка специальных символов UTF-8
SELECT make_set(7, 'ṭṛì', 'ḍḍumai', 'test');
+------------------------------------------+
| make_set(7, 'ṭṛì', 'ḍḍumai', 'test') |
+------------------------------------------+
| ṭṛì,ḍḍumai,test |
+------------------------------------------+
Ключевые слова
MAKE_SET