ฟังก์ชันนี้เป็นฟังก์ชันสตริงของ MySQL ใช้สำหรับค้นหา ด้วยไวยากรณ์ของ EXPORT_SET() เราสามารถเข้าใจการทำงานได้:
ไวยากรณ์
EXPORT_SET(bits, on, off, separator, number_of_bits)
ในไวยากรณ์นี้:
bits(ได้จากการแปลงจำนวนเต็มเป็นบิต) จะถูกเปรียบเทียบว่าเป็น 1 หรือ 0onคืออาร์กิวเมนต์ที่ 2 มีค่าในเครื่องหมายคำพูด จะคืนค่านี้หากบิตในอาร์กิวเมนต์แรกเป็น 1offคืออาร์กิวเมนต์ที่ 3 มีค่าในเครื่องหมายคำพูด จะคืนค่านี้หากบิตในอาร์กิวเมนต์แรกเป็น 0separatorใช้วางระหว่างค่าที่คืนขณะแสดงผล สามารถเป็นตัวอักษรหรือค่าใดๆ ในเครื่องหมายคำพูดnumber_of_bitsมีค่าของบิตที่จะตรวจสอบว่าเป็น 1 หรือ 0
การทำงานของ EXPORT_SET()
ทำงานดังนี้:
- แปลงค่าจำนวนเต็มที่ให้เป็นอาร์กิวเมนต์แรกเป็นบิต (0 และ 1) ตรวจสอบทุกบิตว่าเป็น 1 หรือ 0 ลำดับการตรวจสอบคือจากขวาไปซ้าย
- MySQL ตัดสินใจว่าจะทำอะไรหลังตรวจสอบ: หากบิตเป็น 1 คืนอาร์กิวเมนต์ที่ 2 ('on') หากเป็น 0 คืนอาร์กิวเมนต์ที่ 3 ('off')
- การตรวจสอบดำเนินต่อไปจนถึงจำนวนบิตที่ระบุในอาร์กิวเมนต์ที่ 5
- MySQL จะคืนผลลัพธ์และวางตัวคั่นระหว่างค่าที่คืน ค่าจะถูกคืนจากซ้ายไปขวา
ตัวอย่าง
mysql> SELECT EXPORT_SET(8, '1', '0', ',', 8); +-------------------------------+ | EXPORT_SET(8, '1', '0', ',', 8) | +-------------------------------+ | 0,0,0,1,0,0,0,0 | +-------------------------------+ 1 row in set (0.00 sec) mysql> SELECT EXPORT_SET(8, '1', '0', ',', 4); +-------------------------------+ | EXPORT_SET(8, '1', '0', ',', 4) | +-------------------------------+ | 0,0,0,1 | +-------------------------------+ 1 row in set (0.00 sec)
ในทั้งสองตัวอย่าง เราให้ 8 เป็นอาร์กิวเมนต์แรก ซึ่งจะแปลงเป็นบิตคือ 1000 แล้วตรวจสอบ 1 และ 0 จนถึง 8 บิต (ตัวอย่างแรก) และ 4 บิต (ตัวอย่างที่สอง) เนื่องจากระบุ 8 และ 4 เป็นอาร์กิวเมนต์ที่ 5 ตามลำดับ ในการแสดงผล ใช้คอมม่า (,) เป็นตัวคั่น เนื่องจากระบุเป็นอาร์กิวเมนต์ที่ 4 ในทั้งสองกรณี
ลำดับการตรวจสอบจากขวาไปซ้าย ในตัวอย่าง 1000 บิตขวามือสุดคือ 0 จึงคืนอาร์กิวเมนต์ที่ 3 คือ 0 ต่อไปอีกสองตำแหน่งก็เป็น 0 จึงคืน 0 อีกสองตัว แล้วเจอ 1 จึงคืนอาร์กิวเมนต์ที่ 2 คือ 1 ในตัวอย่างที่ 2 ได้ผลลัพธ์ 4 หลัก เพราะตรวจสอบ 4 หลัก แต่ตัวอย่างแรกตรวจสอบ 8 หลัก จึงได้ 8 หลัก ลำดับผลลัพธ์จากซ้ายไปขวา จึงแสดงเป็น 0,0,0,1,0,0,0,0 และ 0,0,0,1 ตามลำดับ