Để 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 INTEGERtrong 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