Di MariaDB, MAKE_SET()
adalah fungsi string yang mengembalikan nilai yang ditetapkan, berdasarkan nilai yang diberikan dalam argumennya.
Himpunan adalah string yang berisi substring yang dipisahkan dengan koma (,
) karakter.
Sintaks
Sintaksnya seperti ini:
MAKE_SET(bits,str1,str2,...)
Dimana str1, str2,...
adalah satu atau lebih nilai string dan bits
menentukan nilai string mana yang akan disertakan dalam set.
MAKE_SET()
mengembalikan nilai yang ditetapkan yang terdiri dari string yang memiliki bit yang sesuai dalam bits
mengatur.
Contoh
Berikut ini contoh untuk didemonstrasikan:
SELECT MAKE_SET( 1, 'a', 'b', 'c', 'd' );
Hasil:
+-----------------------------------+ | MAKE_SET( 1, 'a', 'b', 'c', 'd' ) | +-----------------------------------+ | a | +-----------------------------------+
Perhatikan bahwa ia menggunakan representasi biner dari argumen pertama untuk mengembalikan string yang berlaku dalam argumen berikutnya. Oleh karena itu, tidak sesederhana mengatakan, argumen pertama adalah 1 dan sesuai dengan item 1.
Berikut contoh lain yang menggambarkan apa yang saya maksud:
SELECT MAKE_SET( 4, 'a', 'b', 'c', 'd' );
Hasil:
+-----------------------------------+ | MAKE_SET( 4, 'a', 'b', 'c', 'd' ) | +-----------------------------------+ | c | +-----------------------------------+
Cara Kerjanya
Pertimbangkan hal berikut:
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';
Hasil (menggunakan keluaran vertikal):
1: 1 2: 10 3: 11 4: 100 5: 101 6: 110 7: 111 8: 1000 9: 1001 10: 1010
Di sini, saya menggunakan BIN()
berfungsi untuk mengembalikan nilai biner setiap angka.
Kita dapat melihat bahwa representasi biner dari 4
adalah 100
. Kita perlu memvisualisasikan ini mundur untuk menerapkannya ke MAKE_SET()
contoh di atas. Dalam kasus kami, ini adalah nilai biner tiga digit, dengan digit paling kanan sesuai dengan string pertama, digit berikutnya sesuai dengan string kedua, dan digit paling kiri sesuai dengan string ketiga.
Dalam istilah biner, 1
adalah “aktif” dan 0
adalah "mati". MAKE_SET()
fungsi hanya mengembalikan string yang memiliki 1
. yang sesuai dalam nilai binernya. Oleh karena itu, contoh kita di atas mengembalikan string ketiga.
Berikut contoh lain menggunakan nilai yang berbeda:
SELECT MAKE_SET(10, 'a','b','c','d');
Hasil:
+-------------------------------+ | MAKE_SET(10, 'a','b','c','d') | +-------------------------------+ | b,d | +-------------------------------+
Dalam hal ini, nilai binernya adalah 1010
. Oleh karena itu ia memiliki dua 1
s, yang sesuai dengan argumen string kedua dan keempat.
Berikut adalah beberapa contoh lagi untuk mendemonstrasikan konsep tersebut lebih lanjut:
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';
Hasil (menggunakan keluaran vertikal):
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
Berikut ini contoh penggunaan rangkaian string yang berbeda:
SELECT MAKE_SET(3, 'Cat','Bat','Rat');
Hasil (menggunakan keluaran vertikal):
+--------------------------------+ | MAKE_SET(3, 'Cat','Bat','Rat') | +--------------------------------+ | Cat,Bat | +--------------------------------+
Beberapa Nilai Biner
Gunakan simbol pipa (|
) untuk menyertakan lebih dari satu nilai dalam kumpulan:
SELECT MAKE_SET( 1 | 4, 'Cat', 'Bat', 'Rat' );
Hasil:
+----------------------------------------+ | MAKE_SET( 1 | 4, 'Cat', 'Bat', 'Rat' ) | +----------------------------------------+ | Cat,Rat | +----------------------------------------+
Nilai Null
Jika nilai string null
, maka dihilangkan dari hasil:
SELECT MAKE_SET( 1 | 3, 'Cat', null, 'Rat' );
Hasil:
+---------------------------------------+ | MAKE_SET( 1 | 3, 'Cat', null, 'Rat' ) | +---------------------------------------+ | Cat | +---------------------------------------+