MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Cách MAKE_SET () hoạt động trong MariaDB

Trong MariaDB, MAKE_SET() là một hàm chuỗi trả về một giá trị đã đặt, dựa trên các giá trị được cung cấp trong các đối số của nó.

Một tập hợp là một chuỗi chứa các chuỗi con được phân tách bằng dấu phẩy (, ) ký tự.

Cú pháp

Cú pháp như sau:

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

Trong đó str1, str2,... là một hoặc nhiều giá trị chuỗi và bits chỉ định giá trị chuỗi nào trong số đó để đưa vào tập hợp.

MAKE_SET() trả về một giá trị đã đặt bao gồm các chuỗi có bit tương ứng trong bits đặt.

Ví dụ

Dưới đây là một ví dụ để chứng minh:

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

Kết quả:

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

Lưu ý rằng nó sử dụng biểu diễn nhị phân của đối số đầu tiên để trả về các chuỗi có thể áp dụng trong các đối số tiếp theo. Do đó, không đơn giản như nói, đối số đầu tiên là 1 và đối số tương ứng với mục 1.

Dưới đây là một ví dụ khác minh họa ý tôi muốn nói:

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

Kết quả:

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

Cách hoạt động

Hãy xem xét những điều sau:

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

Kết quả (sử dụng đầu ra dọc):

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

Ở đây, tôi sử dụng BIN() hàm để trả về giá trị nhị phân của mỗi số.

Chúng ta có thể thấy rằng biểu diễn nhị phân của 4100 . Chúng tôi cần hình dung ngược điều này để áp dụng nó cho MAKE_SET() của chúng tôi ví dụ trên. Trong trường hợp của chúng tôi, đây là giá trị nhị phân gồm ba chữ số, với chữ số tận cùng bên phải tương ứng với chuỗi đầu tiên, chữ số tiếp theo tương ứng với chuỗi thứ hai và chữ số ngoài cùng bên trái tương ứng với chuỗi thứ ba.

Theo thuật ngữ nhị phân, 1 là “bật” và 0 No tăt rôi". MAKE_SET() hàm chỉ trả về các chuỗi có 1 tương ứng trong giá trị nhị phân của chúng. Do đó, ví dụ của chúng tôi ở trên trả về chuỗi thứ ba.

Dưới đây là một ví dụ khác sử dụng một giá trị khác:

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

Kết quả:

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

Trong trường hợp này, giá trị nhị phân là 1010 . Do đó, nó có hai 1 s, tương ứng với đối số chuỗi thứ hai và thứ tư.

Dưới đây là một số ví dụ khác để minh chứng thêm cho khái niệm này:

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

Kết quả (sử dụng đầu ra dọc):

 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

Dưới đây là một ví dụ sử dụng một nhóm chuỗi khác:

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

Kết quả (sử dụng đầu ra dọc):

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

Nhiều giá trị nhị phân

Sử dụng ký hiệu ống (| ) để bao gồm nhiều hơn một giá trị trong tập hợp:

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

Kết quả:

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

Giá trị rỗng

Nếu giá trị chuỗi là null , sau đó nó bị bỏ qua khỏi kết quả:

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

Kết quả:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách IFNULL () hoạt động trong MariaDB

  2. Cách TO_DAYS () hoạt động trong MariaDB

  3. Cách sao lưu cơ sở dữ liệu Moodle MariaDB của bạn

  4. Cách LPAD () hoạt động trong MariaDB

  5. Di chuyển Amazon RDS (MySQL hoặc MariaDB) sang máy chủ On-Prem