MySQL มีชนิดข้อมูล BIT สำหรับเก็บค่า Binary (Bit Field) การแปลงสตริงบิต (เช่น '1110') เป็นค่า BIT สามารถใช้ CONV() แปลงฐานได้
สร้างตาราง BIT(4)
mysql> create table DemoTable (stringValue BIT(4));
INSERT ค่าบิตจากสตริง
mysql> insert into DemoTable values(CONV('1110', 2, 10) * 1);
mysql> insert into DemoTable values(b'1011');
คำอธิบาย
CONV('1110', 2, 10)- แปลงจากฐาน 2 (Binary) เป็นฐาน 10 (Decimal) = 14* 1- บังคับให้เป็นตัวเลข (Context แบบ Numeric)b'1011'- Binary Literal Syntax (MySQL Native)
แสดงผล: ค่า Decimal และ Binary
mysql> select stringValue+0 AS DECIMAL_VALUE, BIN(stringValue) AS BINARY_VALUE from DemoTable;
ผลลัพธ์
+---------------+--------------+ | DECIMAL_VALUE | BINARY_VALUE | +---------------+--------------+ | 14 | 1110 | | 11 | 1011 | +---------------+--------------+
ฟังก์ชันเกี่ยวกับ Bit
| ฟังก์ชัน | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| CONV(N, from_base, to_base) | แปลงฐานตัวเลข | CONV('FF', 16, 10) = 255 |
| BIN(N) | แปลงเป็นสตริง Binary | BIN(14) = '1110' |
| BIT_COUNT(N) | นับ Bit ที่เป็น 1 | BIT_COUNT(14) = 3 |
| N & M | Bitwise AND | 14 & 11 = 10 (1010) |
| N | M | Bitwise OR | 14 | 11 = 15 (1111) |
| N ^ M | Bitwise XOR | 14 ^ 11 = 5 (0101) |
| ~N | Bitwise NOT | ~14 = ...11110001 |
การใช้ BIT Column
BIT(1)- Boolean flag (0/1)BIT(8)- 8 flags ในคอลัมน์เดียวBIT(64)- สูงสุด 64 bits- ขนาด: BIT(M) ใช้ประมาณ (M+7)/8 bytes
คำเตือน
- SELECT ตรงๆ จะแสดงเป็น Binary Blob (อาจดูเป็นช่องว่าง/อักขระแปลก)
- ต้องใช้
+0หรือBIN()หรือHEX()เพื่ออ่านค่า - สำหรับ Flag หลายตัว ควรพิจารณา SET Type หรือ JSON แทน