Hàm CONV(so, he_co_so_nguon, he_co_so_dich) chuyển đổi số giữa các hệ cơ số (2-36). Kết hợp CAST(... AS UNSIGNED INTEGER) để lấy giá trị số lớn (BigInt).
Cú pháp
SELECT CAST(CONV(ten_cot, 16, 10) AS UNSIGNED INTEGER) AS ten_alias FROM ten_bang;
Ví dụ: Hex (16) → Decimal (10).
Ví dụ minh họa
Tạo bảng lưu giá trị Hex:
mysql> CREATE TABLE ChuyenHeCoSo (
-> Id INT NOT NULL AUTO_INCREMENT,
-> GiaTriHex VARCHAR(100),
-> PRIMARY KEY(Id)
-> );
Chèn dữ liệu Hex:
mysql> INSERT INTO ChuyenHeCoSo(GiaTriHex) VALUES
-> ('AB5'),
-> ('55244A5562C5566354'),
-> ('4546575765ABD78'),
-> ('5979787DEFAB'),
-> ('86868686856ABD');
Chuyển Hex → Decimal (BigInt)
mysql> SELECT CAST(CONV(GiaTriHex, 16, 10) AS UNSIGNED INTEGER) AS SoLon
-> FROM ChuyenHeCoSo;
Kết quả:
+----------------------+ | SoLon | +----------------------+ | 2741 | | 18446744073709551615 | | 311985829366644088 | | 98378247434155 | | 37865559219858109 | +----------------------+
Các chuyển đổi phổ biến
| Từ | Đến | Ví dụ |
|---|---|---|
| Hex (16) | Dec (10) | CONV('FF', 16, 10) = 255 |
| Dec (10) | Bin (2) | CONV(10, 10, 2) = 1010 |
| Bin (2) | Hex (16) | CONV('1010', 2, 16) = A |
| Oct (8) | Dec (10) | CONV('17', 8, 10) = 15 |
Lưu ý: UNSIGNED INTEGER tối đa 18446744073709551615 (2^64-1). Số lớn hơn sẽ bị cắt hoặc warning.