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

MySQL: Chuyển đổi hệ cơ số (CONV) - Hex sang Decimal, Binary, v.v.

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ừĐếnVí 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.