sql >> Database >  >> RDS >> MariaDB

Hoe MAKE_SET() werkt in MariaDB

In MariaDB, MAKE_SET() is een tekenreeksfunctie die een ingestelde waarde retourneert, gebaseerd op de waarden in de argumenten.

Een set is een tekenreeks die subtekenreeksen bevat, gescheiden door komma's (, ) tekens.

Syntaxis

De syntaxis gaat als volgt:

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

Waar str1, str2,... is een of meer tekenreekswaarden en bits specificeert welke van die tekenreekswaarden in de set moeten worden opgenomen.

MAKE_SET() geeft een ingestelde waarde terug die bestaat uit de tekenreeksen met de corresponderende bit in bits set.

Voorbeeld

Hier is een voorbeeld om te demonstreren:

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

Resultaat:

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

Merk op dat het de binaire representatie . gebruikt van het eerste argument om de toepasselijke strings in de volgende argumenten te retourneren. Daarom is het niet zo simpel als zeggen, het eerste argument was 1 en dat kwam dus overeen met item 1.

Hier is nog een voorbeeld dat illustreert wat ik bedoel:

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

Resultaat:

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

Hoe het werkt

Overweeg het volgende:

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

Resultaat (met verticale uitvoer):

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

Hier gebruik ik de BIN() functie om de binaire waarde van elk getal te retourneren.

We kunnen zien dat de binaire representatie van 4 is 100 . We moeten dit achterstevoren visualiseren om het toe te passen op onze MAKE_SET() voorbeeld hierboven. In ons geval is dit een binaire waarde van drie cijfers, waarbij het meest rechtse cijfer overeenkomt met de eerste reeks, het volgende cijfer overeenkomt met de tweede reeks en het meest linkse cijfer overeenkomt met de derde reeks.

In binaire termen, 1 is “aan” en 0 is uit". De MAKE_SET() functie retourneert alleen strings met een corresponderende 1 in hun binaire waarde. Daarom retourneert ons voorbeeld hierboven de derde string.

Hier is nog een voorbeeld met een andere waarde:

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

Resultaat:

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

In dit geval is de binaire waarde 1010 . Het heeft dus twee 1 s, die overeenkomen met de tweede en vierde tekenreeksargumenten.

Hier zijn nog enkele voorbeelden om het concept verder te demonstreren:

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

Resultaat (met verticale uitvoer):

 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

Hier is een voorbeeld waarbij een andere reeks snaren wordt gebruikt:

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

Resultaat (met verticale uitvoer):

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

Meerdere binaire waarden

Gebruik een pijpsymbool (| ) om meer dan één waarde in de set op te nemen:

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

Resultaat:

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

Null-waarden

Als een tekenreekswaarde null . is , dan wordt het weggelaten uit het resultaat:

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

Resultaat:

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

  1. Hoe te bestellen op datum in T-SQL

  2. ORA-01461:kan een LONG-waarde alleen binden voor invoegen in een LONG-kolom - Komt voor bij query's

  3. De beste manier om MySQL te hosten op Azure Cloud

  4. Een SQL Server Agent-taak maken in Azure Data Studio