In MariaDB MAKE_SET()
ist eine Zeichenfolgenfunktion, die basierend auf den in ihren Argumenten angegebenen Werten einen festgelegten Wert zurückgibt.
Eine Menge ist eine Zeichenfolge, die durch Komma getrennte Teilzeichenfolgen enthält (,
) Zeichen.
Syntax
Die Syntax lautet wie folgt:
MAKE_SET(bits,str1,str2,...)
Wobei str1, str2,...
ist ein oder mehrere String-Werte und bits
gibt an, welche dieser Zeichenfolgenwerte in den Satz aufgenommen werden sollen.
MAKE_SET()
gibt einen gesetzten Wert zurück, der aus den Strings besteht, die das entsprechende Bit in bits
haben einstellen.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung:
SELECT MAKE_SET( 1, 'a', 'b', 'c', 'd' );
Ergebnis:
+-----------------------------------+ | MAKE_SET( 1, 'a', 'b', 'c', 'd' ) | +-----------------------------------+ | a | +-----------------------------------+
Beachten Sie, dass es die binäre Darstellung verwendet des ersten Arguments, um die anwendbaren Zeichenfolgen in den nachfolgenden Argumenten zurückzugeben. Daher ist es nicht so einfach zu sagen, das erste Argument war 1 und das entsprach Punkt 1.
Hier ist ein weiteres Beispiel, das veranschaulicht, was ich meine:
SELECT MAKE_SET( 4, 'a', 'b', 'c', 'd' );
Ergebnis:
+-----------------------------------+ | MAKE_SET( 4, 'a', 'b', 'c', 'd' ) | +-----------------------------------+ | c | +-----------------------------------+
Wie es funktioniert
Beachten Sie Folgendes:
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';
Ergebnis (bei vertikaler Ausgabe):
1: 1 2: 10 3: 11 4: 100 5: 101 6: 110 7: 111 8: 1000 9: 1001 10: 1010
Hier verwende ich den BIN()
Funktion, um den Binärwert jeder Zahl zurückzugeben.
Wir können sehen, dass die binäre Darstellung von 4
ist 100
. Wir müssen dies rückwärts visualisieren, um es auf unser MAKE_SET()
anzuwenden Beispiel oben. In unserem Fall ist dies ein dreistelliger Binärwert, wobei die Ziffer ganz rechts der ersten Zeichenfolge entspricht, die nächste Ziffer der zweiten Zeichenfolge entspricht und die Ziffer ganz links der dritten Zeichenfolge entspricht.
Binär ausgedrückt, 1
ist „ein“ und 0
ist aus". Das MAKE_SET()
Die Funktion gibt nur Strings zurück, die einen entsprechenden 1
haben in ihrem binären Wert. Daher gibt unser obiges Beispiel die dritte Zeichenfolge zurück.
Hier ist ein weiteres Beispiel mit einem anderen Wert:
SELECT MAKE_SET(10, 'a','b','c','d');
Ergebnis:
+-------------------------------+ | MAKE_SET(10, 'a','b','c','d') | +-------------------------------+ | b,d | +-------------------------------+
In diesem Fall ist der Binärwert 1010
. Es hat also zwei 1
s, die dem zweiten und vierten String-Argument entsprechen.
Hier sind einige weitere Beispiele, um das Konzept weiter zu demonstrieren:
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';
Ergebnis (bei vertikaler Ausgabe):
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 ist ein Beispiel mit einem anderen Satz von Zeichenfolgen:
SELECT MAKE_SET(3, 'Cat','Bat','Rat');
Ergebnis (bei vertikaler Ausgabe):
+--------------------------------+ | MAKE_SET(3, 'Cat','Bat','Rat') | +--------------------------------+ | Cat,Bat | +--------------------------------+
Mehrere Binärwerte
Verwenden Sie ein Pipe-Symbol (|
), um mehr als einen Wert in den Satz aufzunehmen:
SELECT MAKE_SET( 1 | 4, 'Cat', 'Bat', 'Rat' );
Ergebnis:
+----------------------------------------+ | MAKE_SET( 1 | 4, 'Cat', 'Bat', 'Rat' ) | +----------------------------------------+ | Cat,Rat | +----------------------------------------+
Nullwerte
Wenn ein Zeichenfolgenwert null
ist , dann wird es aus dem Ergebnis weggelassen:
SELECT MAKE_SET( 1 | 3, 'Cat', null, 'Rat' );
Ergebnis:
+---------------------------------------+ | MAKE_SET( 1 | 3, 'Cat', null, 'Rat' ) | +---------------------------------------+ | Cat | +---------------------------------------+