Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách chuyển chuỗi thành bitset trong MySQL?

Sử dụng hàm CONV() để chuyển chuỗi nhị phân sang số, sau đó lưu vào cột BIT hoặc hiển thị dưới dạng nhị phân với BIN().

Tạo bảng cột BIT

mysql> CREATE TABLE DemoTable (stringValue BIT(4));

Chèn dữ liệu từ chuỗi nhị phân

mysql> INSERT INTO DemoTable VALUES(CONV('1110', 2, 10) * 1);
mysql> INSERT INTO DemoTable VALUES(b'1011');

CONV('1110', 2, 10) chuyển nhị phân '1110' sang thập phân (14). Nhân 1 để ép kiểu số.

b'1011' là literal bit-string của MySQL (tiền tố b).

Xem dữ liệu gốc (hiển thị trống do kiểu BIT)

mysql> SELECT * FROM DemoTable;

Kết quả hiển thị ký tự không in được (binary data).

Hiển thị giá trị thập phân và nhị phân

mysql> SELECT stringValue + 0 AS DECIMAL_VALUE, BIN(stringValue) AS BINARY_VALUE FROM DemoTable;
+---------------+--------------+
| DECIMAL_VALUE | BINARY_VALUE |
+---------------+--------------+
| 14            | 1110         |
| 11            | 1011         |
+---------------+--------------+

Giải thích

  • stringValue + 0: Ép kiểu BIT sang số (thập phân) để hiển thị
  • BIN(n): Trả về chuỗi nhị phân của số n
  • CONV(str, from_base, to_base): Chuyển đổi cơ số (2→10, 10→16, 16→2...)

Các thao tác bitwise hữu ích

-- Kiểm tra bit thứ n (0-indexed): (value >> n) & 1
-- Bật bit thứ n: value | (1 << n)
-- Tắt bit thứ n: value & ~(1 << n)
-- Đảo bit thứ n: value ^ (1 << n)

Lưu ý về BIT(n)

  • BIT(1) thường dùng cho boolean (true/false)
  • BIT(n) lưu tối đa n bit, n ≤ 64
  • Khi SELECT trực tiếp, client có thể hiển thị nhị phân hoặc ký tự điều khiển — luôn dùng +0 hoặc BIN()