MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как MAKE_SET() работи в MariaDB

В MariaDB, MAKE_SET() е низова функция, която връща зададена стойност въз основа на стойностите, предоставени в нейните аргументи.

Наборът е низ, съдържащ поднизове, разделени със запетая (, ) символи.

Синтаксис

Синтаксисът е така:

MAKE_SET(bits,str1,str2,...)

Където str1, str2,... е една или повече стойности на низове и bits определя кои от тези низови стойности да бъдат включени в набора.

MAKE_SET() връща зададена стойност, състояща се от низовете, които имат съответния бит в bits комплект.

Пример

Ето пример за демонстрация:

SELECT MAKE_SET( 1, 'a', 'b', 'c', 'd' );

Резултат:

+-----------------------------------+
| MAKE_SET( 1, 'a', 'b', 'c', 'd' ) |
+-----------------------------------+
| a                                 |
+-----------------------------------+

Имайте предвид, че използва двоичното представяне на първия аргумент, за да върне приложимите низове в следващите аргументи. Следователно не е толкова просто, колкото да се каже, че първият аргумент е 1 и така отговаря на т. 1.

Ето още един пример, който илюстрира какво имам предвид:

SELECT MAKE_SET( 4, 'a', 'b', 'c', 'd' );

Резултат:

+-----------------------------------+
| MAKE_SET( 4, 'a', 'b', 'c', 'd' ) |
+-----------------------------------+
| c                                 |
+-----------------------------------+

Как работи

Помислете за следното:

SELECT 
    BIN(1) AS '1', 
    BIN(2) AS '2', 
    BIN(3) AS '3', 
    BIN(4) AS '4', 
    BIN(5) AS '5', 
    BIN(6) AS '6', 
    BIN(7) AS '7', 
    BIN(8) AS '8', 
    BIN(9) AS '9', 
    BIN(10) AS '10';

Резултат (с помощта на вертикален изход):

 1: 1
 2: 10
 3: 11
 4: 100
 5: 101
 6: 110
 7: 111
 8: 1000
 9: 1001
10: 1010

Тук използвам BIN() функция за връщане на двоичната стойност на всяко число.

Можем да видим, че двоичното представяне на 4 е 100 . Трябва да визуализираме това назад, за да го приложим към нашия MAKE_SET() пример по-горе. В нашия случай това е трицифрена двоична стойност, като най-дясната цифра съответства на първия низ, следващата цифра съответства на втория низ, а най-лявата цифра съответства на третия низ.

В двоични термини, 1 е „включено“ и 0 е изключен". MAKE_SET() функцията връща само низове, които имат съответен 1 в тяхната двоична стойност. Следователно нашият пример по-горе връща третия низ.

Ето още един пример, използващ различна стойност:

SELECT MAKE_SET(10, 'a','b','c','d');

Резултат:

+-------------------------------+
| MAKE_SET(10, 'a','b','c','d') |
+-------------------------------+
| b,d                           |
+-------------------------------+

В този случай двоичната стойност е 1010 . Следователно има две 1 s, които съответстват на втория и четвъртия аргумент на низа.

Ето още няколко примера за по-нататъшно демонстриране на концепцията:

SELECT 
    MAKE_SET(1, 'a','b','c','d') AS '1', 
    MAKE_SET(2, 'a','b','c','d') AS '2', 
    MAKE_SET(3, 'a','b','c','d') AS '3', 
    MAKE_SET(4, 'a','b','c','d') AS '4', 
    MAKE_SET(5, 'a','b','c','d') AS '5', 
    MAKE_SET(6, 'a','b','c','d') AS '6', 
    MAKE_SET(7, 'a','b','c','d') AS '7', 
    MAKE_SET(8, 'a','b','c','d') AS '8', 
    MAKE_SET(9, 'a','b','c','d') AS '9', 
    MAKE_SET(10, 'a','b','c','d') AS '10';

Резултат (с помощта на вертикален изход):

 1: a
 2: b
 3: a,b
 4: c
 5: a,c
 6: b,c
 7: a,b,c
 8: d
 9: a,d
10: b,d

Ето пример за използване на различен набор от низове:

SELECT MAKE_SET(3, 'Cat','Bat','Rat');

Резултат (с помощта на вертикален изход):

+--------------------------------+
| MAKE_SET(3, 'Cat','Bat','Rat') |
+--------------------------------+
| Cat,Bat                        |
+--------------------------------+

Множество двоични стойности

Използвайте символ на тръба (| ), за да включите повече от една стойност в набора:

SELECT MAKE_SET( 1 | 4, 'Cat', 'Bat', 'Rat' );

Резултат:

+----------------------------------------+
| MAKE_SET( 1 | 4, 'Cat', 'Bat', 'Rat' ) |
+----------------------------------------+
| Cat,Rat                                |
+----------------------------------------+

Нулеви стойности

Ако стойността на низ е null , след което се пропуска от резултата:

SELECT MAKE_SET( 1 | 3, 'Cat', null, 'Rat' );

Резултат:

+---------------------------------------+
| MAKE_SET( 1 | 3, 'Cat', null, 'Rat' ) |
+---------------------------------------+
| Cat                                   |
+---------------------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как CHR() работи в MariaDB

  2. Как REPEAT() работи в MariaDB

  3. Аварийно възстановяване за Galera Cluster, разположено в хибриден облак

  4. Как работи MONTH() в MariaDB

  5. Как да върнете елементи от JSON масив в MariaDB