Trong MariaDB, EXPORT_SET()
là một hàm chuỗi tích hợp trả về một chuỗi phản ánh các bit trong giá trị được chỉ định. Đối với mỗi bit được đặt trong giá trị được chỉ định, bạn nhận được một chuỗi “bật” và đối với mỗi bit không được đặt trong giá trị, bạn nhận được một chuỗi “tắt”.
Nó chấp nhận tối thiểu ba đối số, cộng với hai đối số tùy chọn.
Cú pháp
Cú pháp như sau:
EXPORT_SET(bits, on, off[, separator[, number_of_bits]])
Bảng sau đây cung cấp giải thích về những lập luận đó.
bits | Giá trị mà bạn muốn kết quả trả về. Được cung cấp dưới dạng số nguyên, nhưng nó được chuyển đổi thành bit. Đối với mỗi bit được đặt trong giá trị này, bạn nhận được một bật chuỗi và đối với mỗi bit không được đặt trong giá trị, bạn sẽ bị tắt sợi dây. Các bit được kiểm tra từ phải sang trái (từ các bit bậc thấp đến các bit bậc cao). |
on | Chuỗi được trả về cho bất kỳ on nào bit. |
off | Chuỗi được trả về cho bất kỳ tắt nào bit. |
separator | Đối số tùy chọn mà bạn có thể sử dụng để chỉ định dấu phân tách sẽ sử dụng. Giá trị mặc định là ký tự dấu phẩy. Do đó, nếu bạn không chỉ định đối số này, dấu phẩy sẽ được sử dụng làm dấu phân cách. |
number_of_bits | Số lượng bit cần kiểm tra. Giá trị mặc định là 64. Nếu bạn cung cấp giá trị lớn hơn, giá trị này sẽ được cắt âm thầm thành 64 nếu lớn hơn 64. |
Ví dụ
Đây là một ví dụ cơ bản:
SELECT EXPORT_SET(13,'On','Off',',',4);
Kết quả:
+---------------------------------+ | EXPORT_SET(13,'On','Off',',',4) | +---------------------------------+ | On,Off,On,On | +---------------------------------+
Chúng ta có thể thấy rằng các bit đầu tiên, thứ ba và thứ tư được đặt, nhưng bit thứ hai thì không.
Chúng ta có thể sử dụng BIN()
hàm để trả về một kết quả tương tự, nhưng theo thứ tự ngược lại:
SELECT BIN(13);
Kết quả:
+---------+ | BIN(13) | +---------+ | 1101 | +---------+
BIN()
hàm trả về một biểu diễn chuỗi của giá trị nhị phân của độ dài đã cho. Trong ví dụ này, nó trả về ba 1
S.
Trong EXPORT_SET()
của chúng tôi ví dụ, chúng tôi đã chỉ định rằng on
và off
nên được sử dụng để đại diện cho 1
và 0
tương ứng. Tuy nhiên, chúng tôi có thể thay đổi điều đó (bên dưới).
Ngoài ra, với EXPORT_SET()
, các chuỗi được thêm vào kết quả từ trái sang phải. Do đó, kết quả từ EXPORT_SET()
trông giống như một hình ảnh phản chiếu của kết quả từ BIN()
.
Thay đổi giá trị Bật / Tắt
Đây là một lần nữa, nhưng lần này chúng tôi sử dụng một chuỗi khác cho on
và off
tiểu bang.
SELECT EXPORT_SET(7,'1','0',',',4);
Kết quả:
+-----------------------------+ | EXPORT_SET(7,'1','0',',',4) | +-----------------------------+ | 1,1,1,0 | +-----------------------------+
Lần này chúng tôi đang sử dụng 1
và 0
, tương tự như BIN()
hàm trả về, nhưng có thêm dấu phân tách (và được đảo ngược).
Thay đổi Dấu phân cách
Đối số thứ tư (tùy chọn) chỉ định dấu phân tách sẽ sử dụng. Đây là nó với một dấu phân tách khác:
SELECT EXPORT_SET(7,'True','False','-',4);
Kết quả:
+------------------------------------+ | EXPORT_SET(7,'True','False','-',4) | +------------------------------------+ | True-True-True-False | +------------------------------------+
Thay đổi số lượng bit để kiểm tra
Đối số thứ năm (tùy chọn) chỉ định số lượng bit cần kiểm tra. Trong các ví dụ trước, chúng tôi đã sử dụng 4 làm số bit để kiểm tra. Chúng tôi có thể tăng điều này nếu chúng tôi muốn:
SELECT EXPORT_SET(7,'1','0',',',10);
Kết quả:
+------------------------------+ | EXPORT_SET(7,'1','0',',',10) | +------------------------------+ | 1,1,1,0,0,0,0,0,0,0 | +------------------------------+
Trong trường hợp này, tất cả các bit phụ không được đặt. Hãy tăng giá trị của đối số đầu tiên để xem điều này ảnh hưởng như thế nào đến kết quả:
SELECT EXPORT_SET(172,'1','0',',',10);
Kết quả:
+--------------------------------+ | EXPORT_SET(172,'1','0',',',10) | +--------------------------------+ | 0,0,1,1,0,1,0,1,0,0 | +--------------------------------+
Giá trị mặc định
Như đã đề cập, đối số thứ tư và thứ năm là tùy chọn. Khi bạn bỏ qua các giá trị này, các giá trị mặc định sẽ được sử dụng.
Số bit mặc định
Nếu chúng ta loại bỏ đối số cuối cùng, 64 bit sẽ được kiểm tra:
SELECT EXPORT_SET(172,'1','0','');
Kết quả:
+------------------------------------------------------------------+ | EXPORT_SET(172,'1','0','') | +------------------------------------------------------------------+ | 0011010100000000000000000000000000000000000000000000000000000000 | +------------------------------------------------------------------+
Trong trường hợp này, tôi cũng đã xóa dấu phân tách để làm cho đầu ra ngắn gọn hơn.
Dấu phân tách mặc định
Chúng tôi cũng có thể loại bỏ đối số phân tách. Khi chúng tôi thực hiện việc này, EXPORT_SET()
sử dụng dấu phẩy làm dấu phân tách mặc định.
SELECT EXPORT_SET(123456789,'1','0');
Kết quả:
+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+ | EXPORT_SET(123456789,'1','0') | +---------------------------------------------------------------------------------------------------------------------------------+ | 1,0,1,0,1,0,0,0,1,0,1,1,0,0,1,1,1,1,0,1,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 | +---------------------------------------------------------------------------------------------------------------------------------+
Đối số rỗng
Nếu bất kỳ đối số nào là null
, kết quả là null
:
SELECT
EXPORT_SET(null,'1','0') AS "1",
EXPORT_SET(7,null,'0') AS "2",
EXPORT_SET(7,'1',null) AS "3",
EXPORT_SET(7,'1','0',null,4) AS "4",
EXPORT_SET(7,'1','0',',',null) AS "5";
Kết quả:
+------+------+------+------+------+ | 1 | 2 | 3 | 4 | 5 | +------+------+------+------+------+ | NULL | NULL | NULL | NULL | NULL | +------+------+------+------+------+
Thiếu đối số
Đang gọi EXPORT_SET()
mà không chuyển bất kỳ đối số nào (hoặc với số lượng đối số sai) dẫn đến lỗi:
SELECT EXPORT_SET();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'EXPORT_SET'