sql >> Databáze >  >> RDS >> MariaDB

Jak MAKE_SET() funguje v MariaDB

V MariaDB, MAKE_SET() je řetězcová funkce, která vrací nastavenou hodnotu na základě hodnot uvedených v jejích argumentech.

Sada je řetězec obsahující podřetězce oddělené čárkou (, ) znaky.

Syntaxe

Syntaxe vypadá takto:

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

Kde str1, str2,... je jedna nebo více řetězcových hodnot a bits určuje, které z těchto řetězcových hodnot se mají zahrnout do sady.

MAKE_SET() vrací nastavenou hodnotu sestávající z řetězců, které mají odpovídající bit v bits soubor.

Příklad

Zde je příklad k demonstraci:

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

Výsledek:

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

Všimněte si, že používá binární reprezentaci prvního argumentu, aby se v následujících argumentech vrátily použitelné řetězce. Není to tedy tak jednoduché, jako říct, že první argument byl 1 a tak to odpovídalo položce 1.

Zde je další příklad, který ilustruje, co tím myslím:

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

Výsledek:

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

Jak to funguje

Zvažte následují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';

Výsledek (při použití vertikálního výstupu):

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

Zde používám BIN() funkce, která vrátí binární hodnotu každého čísla.

Můžeme vidět, že binární reprezentace 4 je 100 . Abychom to mohli aplikovat na naši MAKE_SET(), musíme si to vizualizovat zpětně příklad výše. V našem případě se jedná o třímístnou binární hodnotu, přičemž číslice nejvíce vpravo odpovídá prvnímu řetězci, další číslice odpovídá druhému řetězci a číslice nejvíce vlevo odpovídá třetímu řetězci.

V binárním vyjádření 1 je „on“ a 0 je „vypnuto“. MAKE_SET() funkce vrací pouze řetězce, které mají odpovídající 1 v jejich binární hodnotě. Náš příklad výše proto vrací třetí řetězec.

Zde je další příklad s použitím jiné hodnoty:

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

Výsledek:

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

V tomto případě je binární hodnota 1010 . Má tedy dvě 1 s, které odpovídají druhému a čtvrtému argumentu řetězce.

Zde je několik dalších příkladů, které tento koncept dále demonstrují:

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

Výsledek (při použití vertikálního výstupu):

 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

Zde je příklad použití jiné sady řetězců:

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

Výsledek (při použití vertikálního výstupu):

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

Více binárních hodnot

Použijte symbol čáry (| ), chcete-li do sady zahrnout více než jednu hodnotu:

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

Výsledek:

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

Nulové hodnoty

Pokud je hodnota řetězce null , pak je z výsledku vynechán:

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

Výsledek:

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

  1. Přicházejí nové funkce Microsoft Access!

  2. Připojení k SQL Server LocalDB pomocí JDBC

  3. Příklady MAKETIME() – MySQL

  4. Jak se připojíte ke stejnému stolu dvakrát v mysql?