Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แปลงสตริงเป็น Bitset ใน MySQL ด้วย CONV() และ BIN()

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)แปลงเป็นสตริง BinaryBIN(14) = '1110'
BIT_COUNT(N)นับ Bit ที่เป็น 1BIT_COUNT(14) = 3
N & MBitwise AND14 & 11 = 10 (1010)
N | MBitwise OR14 | 11 = 15 (1111)
N ^ MBitwise XOR14 ^ 11 = 5 (0101)
~NBitwise 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 แทน