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

MySQL: Ép kiểu sang BIGINT (CAST + CONV từ Hex)

Để chuyển giá trị hexadecimal (hệ 16) sang số nguyên lớn (BIGINT/UNSIGNED), kết hợp CONV() chuyển cơ số và CAST() ép kiểu.

Cú pháp

SELECT CAST(CONV(ten_cot_hex, 16, 10) AS UNSIGNED INTEGER) AS SoLon
FROM ten_bang;

Ví dụ minh họa

Tạo bảng lưu giá trị Hex:

mysql> CREATE TABLE EpKieuBigInt (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> GiaTriHex VARCHAR(100)
    -> );

Chèn dữ liệu Hex lớn:

mysql> INSERT INTO EpKieuBigInt(GiaTriHex) VALUES
    -> ('AB5'), 
    -> ('55244A5562C5566354'), 
    -> ('4546575765ABD78'), 
    -> ('5979787DEFAB'), 
    -> ('86868686856ABD');

Chuyển Hex (16) → Decimal (10) → UNSIGNED BIGINT

mysql> SELECT CAST(CONV(GiaTriHex, 16, 10) AS UNSIGNED INTEGER) AS BigNumber
    -> FROM EpKieuBigInt;

Kết quả:

+----------------------+
| BigNumber            |
+----------------------+
| 2741                 |
| 18446744073709551615 |
| 311985829366644088   |
| 98378247434155       |
| 37865559219858109    |
+----------------------+

Lưu ý:

  • UNSIGNED INTEGER trong MySQL = 64-bit unsigned (0 đến 18,446,744,073,709,551,615)
  • Giá trị dòng 2 đạt tối đa UNSIGNED BIGINT
  • Dòng 3, 5 vượt quá → có warning (truncation/overflow)
  • Dùng DECIMAL(65,0) nếu cần số lớn hơn 64-bit

Chuyển đổi ngược: Số → Hex

SELECT CONV(255, 10, 16);  -- FF
SELECT CONV(1000, 10, 16); -- 3E8