sql >> Database teknologi >  >> RDS >> MariaDB

Hvordan MAKE_SET() virker i MariaDB

I MariaDB, MAKE_SET() er en strengfunktion, der returnerer en indstillet værdi baseret på værdierne i dens argumenter.

Et sæt er en streng, der indeholder understrenge adskilt af komma (, ) tegn.

Syntaks

Syntaksen ser sådan ud:

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

Hvor str1, str2,... er en eller flere strengværdier og bits angiver, hvilke af disse strengværdier, der skal inkluderes i sættet.

MAKE_SET() returnerer en indstillet værdi bestående af de strenge, der har den tilsvarende bit i bits sæt.

Eksempel

Her er et eksempel til demonstration:

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

Resultat:

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

Bemærk, at den bruger den binære repræsentation af det første argument for at returnere de gældende strenge i de efterfølgende argumenter. Derfor er det ikke så enkelt som at sige, at det første argument var 1, og det svarede til punkt 1.

Her er et andet eksempel, der illustrerer, hvad jeg mener:

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

Resultat:

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

Sådan virker det

Overvej følgende:

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

Resultat (ved hjælp af lodret output):

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

Her bruger jeg BIN() funktion for at returnere hvert tals binære værdi.

Vi kan se, at den binære repræsentation af 4 er 100 . Vi er nødt til at visualisere dette baglæns for at anvende det på vores MAKE_SET() eksempel ovenfor. I vores tilfælde er dette en trecifret binær værdi, hvor cifferet længst til højre svarer til den første streng, det næste ciffer svarer til den anden streng, og cifferet længst til venstre svarer til den tredje streng.

I binære termer, 1 er "on" og 0 er "slukket". MAKE_SET() funktion returnerer kun strenge, der har en tilsvarende 1 i deres binære værdi. Derfor returnerer vores eksempel ovenfor den tredje streng.

Her er et andet eksempel med en anden værdi:

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

Resultat:

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

I dette tilfælde er den binære værdi 1010 . Den har derfor to 1 s, som svarer til det andet og det fjerde strengargument.

Her er nogle flere eksempler for at demonstrere konceptet yderligere:

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

Resultat (ved hjælp af lodret output):

 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

Her er et eksempel med et andet sæt strenge:

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

Resultat (ved hjælp af lodret output):

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

Flere binære værdier

Brug et rørsymbol (| ) for at inkludere mere end én værdi i sættet:

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

Resultat:

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

Nul-værdier

Hvis en strengværdi er null , så er det udeladt fra resultatet:

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

Resultat:

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

  1. TILKNYT sqlite-database i Android med SQLiteOpenHelper

  2. Håndtering af en MySQL-database i cPanel med PHPMyAdmin

  3. Oracle:funktion baseret indeks selektiv unikhed

  4. PostgreSQL Anonymisering On Demand