MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak działa MAKE_SET() w MariaDB

W MariaDB, MAKE_SET() to funkcja tekstowa, która zwraca ustawioną wartość na podstawie wartości podanych w jej argumentach.

Zbiór to ciąg zawierający podciągi oddzielone przecinkiem (, ) znaków.

Składnia

Składnia wygląda tak:

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

Gdzie str1, str2,... to co najmniej jedna wartość ciągu i bits określa, które z tych wartości ciągów mają zostać uwzględnione w zestawie.

MAKE_SET() zwraca ustawioną wartość składającą się z ciągów, które mają odpowiedni bit w bits ustawić.

Przykład

Oto przykład do zademonstrowania:

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

Wynik:

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

Zauważ, że używa reprezentacji binarnej pierwszego argumentu, aby zwrócić odpowiednie ciągi w kolejnych argumentach. Dlatego nie jest to tak proste, jak stwierdzenie, że pierwszym argumentem był 1, a więc odpowiadał punktowi 1.

Oto kolejny przykład ilustrujący to, co mam na myśli:

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

Wynik:

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

Jak to działa

Rozważ następujące kwestie:

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';

Wynik (przy użyciu wyjścia pionowego):

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

Tutaj używam BIN() funkcja zwracająca wartość binarną każdej liczby.

Widzimy, że binarna reprezentacja 4 to 100 . Musimy to zwizualizować wstecz, aby zastosować to do naszego MAKE_SET() przykład powyżej. W naszym przypadku jest to trzycyfrowa wartość binarna, przy czym skrajna prawa cyfra odpowiada pierwszemu ciągowi, następna cyfra odpowiada drugiemu ciągowi, a skrajna lewa cyfra odpowiada trzeciemu ciągowi.

W kategoriach binarnych 1 jest „włączony” i 0 jest wyłączony". MAKE_SET() funkcja zwraca tylko ciągi, które mają odpowiadające 1 w ich wartości binarnej. Dlatego nasz przykład powyżej zwraca trzeci ciąg.

Oto kolejny przykład z użyciem innej wartości:

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

Wynik:

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

W tym przypadku wartość binarna to 1010 . Dlatego ma dwa 1 s, które odpowiadają drugiemu i czwartemu argumentowi ciągu.

Oto kilka przykładów, aby lepiej zademonstrować tę koncepcję:

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';

Wynik (przy użyciu wyjścia pionowego):

 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

Oto przykład użycia innego zestawu ciągów:

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

Wynik (przy użyciu wyjścia pionowego):

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

Wiele wartości binarnych

Użyj symbolu potoku (| ) aby dołączyć więcej niż jedną wartość w zestawie:

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

Wynik:

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

Wartości puste

Jeśli wartość ciągu to null , to jest pomijane w wyniku:

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

Wynik:

+---------------------------------------+
| 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. Ustaw zestaw znaków i sortowanie bazy danych w MariaDB

  2. Jak naprawić błąd przekroczenia limitu czasu oczekiwania na blokadę w MySQL?

  3. Laravel:Określony klucz był za długi; maksymalna długość klucza to 767 bajtów

  4. Skalowanie bazy danych Moodle

  5. Uruchamianie zapytań analizy Big Data przy użyciu SQL i Presto