นอกจากนี้ยังเป็นฟังก์ชันสตริง MySQL ที่ใช้สำหรับการค้นหา ด้วยความช่วยเหลือของไวยากรณ์ต่อไปนี้ของฟังก์ชัน EXPORT_SET() เราจะเข้าใจการทำงานของมัน -
ไวยากรณ์
EXPORT_SET(bits, on, off, separator, number of bits)
ที่นี่ในรูปแบบนี้
บิต (ได้หลังจากแปลงจำนวนเต็มเป็นบิต) จะถูกนำมาเปรียบเทียบหากเป็น 1 หรือ 0
‘On’ เป็นอาร์กิวเมนต์ที่สองของฟังก์ชัน มีค่าใดๆ ในเครื่องหมายคำพูด และจะถูกส่งคืนหากค่าของบิตในอาร์กิวเมนต์แรกคือ 1
"ปิด" เป็นอาร์กิวเมนต์ที่สามของฟังก์ชัน มีค่าใดๆ ในเครื่องหมายคำพูด และจะถูกส่งคืนหากค่าบิตในอาร์กิวเมนต์แรกเป็น 0
ตัวคั่นใช้เพื่อวางระหว่างค่าที่ส่งกลับขณะแสดงผลลัพธ์ อาจเป็นอักขระหรือค่าใดก็ได้ในเครื่องหมายคำพูด
จำนวนบิตมีค่าของบิตที่ต้องเปรียบเทียบหากเป็น 1 หรือ 0
การทำงานของฟังก์ชัน EXPORT_SET()
ทำงานดังนี้ -
- อย่างแรกเลย ค่าจำนวนเต็มที่กำหนดเป็นอาร์กิวเมนต์ที่ 1 จะถูกแปลงเป็นจำนวนบิต (เช่น ใน 0 และ 1) จากนั้นตรวจสอบทุกบิตว่าเป็น 1 หรือ 0 ลำดับการตรวจสอบจากขวาไปซ้าย
- ตอนนี้ MySQL ตัดสินใจว่าจะทำอย่างไร หลังจากตรวจสอบแล้ว เมื่อบิตเป็น 1 หรือ 0 หากบิตเป็น 1 จะส่งกลับอาร์กิวเมนต์ที่สอง เช่น 'เปิด' และถ้าบิตเป็น 0 จะส่งกลับอาร์กิวเมนต์ที่สาม นั่นคือ "ปิด"
- การตรวจสอบจะดำเนินต่อไปจนถึงจำนวนบิตที่ระบุในอาร์กิวเมนต์ที่ห้า
- ตอนนี้ ตาม 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 เป็นอาร์กิวเมนต์แรกซึ่งจะถูกแปลงเป็นบิต เช่น 1,000 จากนั้นจะถูกตรวจสอบหา 1 ต่อ 0 สูงสุด 8 บิต (ในตัวอย่างแรก) ขึ้นไป ถึง 4 บิต (ในตัวอย่างที่สอง) เนื่องจาก 8 และ 4 ถูกระบุเป็นอาร์กิวเมนต์ที่ห้าในตัวอย่างที่ 1 และ 2 ตามลำดับ ขณะแสดงผลลัพธ์ เราสามารถสังเกตได้ว่าเครื่องหมายจุลภาค (,) ถูกใช้เป็นตัวคั่น เนื่องจากมีการระบุเป็นอาร์กิวเมนต์ที่สี่ในทั้งสองตัวอย่าง
อย่างที่เราทราบดีว่าลำดับการตรวจสอบมาจากขวาไปซ้าย เช่น ในตัวอย่าง 1000 บิตขวาสุดคือ 0 ดังนั้นอาร์กิวเมนต์ที่สาม เช่น 0 จะถูกส่งคืน จากนั้นจะมีค่า 0 ในสองตำแหน่งถัดไป ดังนั้นอีกสอง 0s จะถูกส่งคืน จากนั้นเป็น 1 ดังนั้นอาร์กิวเมนต์ที่สองเช่น 1 ได้ส่งคืน ในตัวอย่างที่ 2 เราได้รับผลลัพธ์สูงสุด 4 หลัก เนื่องจากการตรวจสอบเสร็จสิ้นแล้วถึง 4 หลัก แต่ในตัวอย่างที่ 1 มีมากถึง 8 หลัก ดังนั้นเราจึงได้รับ 8 หลักในผลลัพธ์ ลำดับของเอาต์พุตจากซ้ายไปขวา ดังนั้นเอาต์พุตจะแสดงเป็น 0,0,0,1,0,0,0,0 ในตัวอย่างที่ 1 และ 0,0,0,1 ในตัวอย่างที่ 2