ฉันมีปัญหาเดียวกันกับฟิลด์ฐานข้อมูลที่มีประเภท "SET" ซึ่งเป็นประเภท enum
ฉันพยายามเพิ่มค่าที่ไม่มีอยู่ในรายการนั้น
ค่าที่ฉันพยายามเพิ่มมีค่าทศนิยม 256 แต่รายการ enum มีเพียง 8 ค่า
1: 1 -> A
2: 2 -> B
3: 4 -> C
4: 8 -> D
5: 16 -> E
6: 32 -> F
7: 64 -> G
8: 128 -> H
ผมจึงต้องเพิ่มค่าเพิ่มเติมให้กับฟิลด์
การอ่านรายการเอกสารนี้ช่วยให้ฉันเข้าใจปัญหา
MySQL จัดเก็บค่า SET เป็นตัวเลขโดยมีบิตลำดับต่ำของค่าที่จัดเก็บไว้ตรงกับสมาชิกชุดแรก หากคุณดึงค่า SET ในบริบทที่เป็นตัวเลขค่าที่ดึงมาจะมีการตั้งค่าบิตที่สอดคล้องกับสมาชิกชุดที่ประกอบเป็นค่าคอลัมน์ ตัวอย่างเช่นคุณสามารถดึงค่าตัวเลขจากคอลัมน์ SET ได้ดังนี้:
mysql> SELECT set_col+0 FROM tbl_name; If a number is stored into a
ถ้าตัวเลขถูกเก็บไว้ในคอลัมน์ SET บิตที่ตั้งค่าไว้ในการแทนค่าฐานสองของตัวเลขจะกำหนดสมาชิกชุดในค่าคอลัมน์ สำหรับคอลัมน์ที่ระบุเป็น SET ('a', 'b', 'c', 'd') สมาชิกจะมีค่าทศนิยมและฐานสองต่อไปนี้
SET Member Decimal Value Binary Value
'a' 1 0001
'b' 2 0010
'c' 4 0100
'd' 8 1000
หากคุณกำหนดค่าเป็น 9 ให้กับคอลัมน์นี้นั่นคือ 1001 เป็นไบนารีดังนั้นสมาชิกค่า SET ตัวแรกและตัวที่สี่จะถูกเลือก "a" และ "d" และค่าผลลัพธ์คือ "a, d"