Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana Fungsi MAKE_SET() Bekerja di MySQL

Di MySQL, MAKE_SET() fungsi mengembalikan nilai yang ditetapkan (string yang berisi substring yang dipisahkan oleh , karakter) yang terdiri dari karakter yang ditentukan sebagai argumen saat Anda memanggil fungsi.

Saat memanggil fungsi, Anda menentukan sejumlah string (dipisahkan dengan koma), serta satu atau beberapa nilai bit yang menentukan string mana yang akan dikembalikan dalam nilai yang ditetapkan.

Sintaks

Sintaksnya seperti ini:

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

Contoh

Berikut ini contoh dasarnya:

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

Hasil:

+--------+
| Result |
+--------+
| a      |
+--------+

Hasil ini mungkin tampak jelas pada awalnya. Bagaimanapun, argumen pertama kita adalah 1 , dan fungsi mengembalikan string pertama.

Namun, itu bukan cara kerjanya.

Ini contoh lain.

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

Hasil:

+--------+
| Result |
+--------+
| c      |
+--------+

Perhatikan itu mengembalikan string ketiga, meskipun kami menetapkan 4 sebagai argumen pertama?

Ini karena MAKE_SET() fungsi menggunakan representasi biner dari argumen pertama untuk mengembalikan string yang berlaku dalam argumen berikutnya.

Lihat contoh kode berikut untuk melihat apa yang saya maksud:

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:

+------+------+------+------+------+------+------+------+------+------+
| 1    | 2    | 3    | 4    | 5    | 6    | 7    | 8    | 9    | 10   |
+------+------+------+------+------+------+------+------+------+------+
| 1    | 10   | 11   | 100  | 101  | 110  | 111  | 1000 | 1001 | 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') Result;

Hasil:

+--------+
| Result |
+--------+
| 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:

+---+---+-----+---+-----+-----+-------+---+-----+-----+
| 1 | 2 | 3   | 4 | 5   | 6   | 7     | 8 | 9   | 10  |
+---+---+-----+---+-----+-----+-------+---+-----+-----+
| a | b | a,b | c | a,c | b,c | a,b,c | d | a,d | b,d |
+---+---+-----+---+-----+-----+-------+---+-----+-----+

Dan berikut ini contoh menggunakan rangkaian string yang berbeda:

SELECT MAKE_SET(5, 'Cat','Dog','Horse','Duck') Result;

Hasil:

+-----------+
| Result    |
+-----------+
| Cat,Horse |
+-----------+

Beberapa Nilai Biner

Anda dapat menggunakan pipa untuk melewatkan beberapa nilai biner dalam argumen pertama:

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

Hasil:

+--------+
| Result |
+--------+
| a,c    |
+--------+

Perhatikan bahwa Anda akan mendapatkan hasil yang sama jika Anda membalikkan nilai biner pada argumen pertama:

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

Hasil:

+--------+
| Result |
+--------+
| a,c    |
+--------+

Nilai NULL

Setiap string dengan nilai NULL tidak ditambahkan ke hasil.

Contoh:

SELECT MAKE_SET(1 | 4, 'a','b',NULL,'d') Result;

Hasil:

+--------+
| Result |
+--------+
| a      |
+--------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL SELECT untuk mendapatkan N bilangan bulat positif pertama

  2. Cara menggunakan indeks untuk meningkatkan kinerja kueri MySQL

  3. Keamanan Basis Data 101:Keamanan dalam Basis Data Sumber Terbuka

  4. Cara membuat cadangan database MySQL menggunakan pekerjaan cron

  5. MySQL pilih satu kolom DISTINCT, dengan kolom lain yang sesuai