แปลงเลขฐานสิบหก (Hexadecimal) เป็นฐานสิบ (Decimal) ใน MySQL
ใช้ฟังก์ชัน CONV() สำหรับแปลงฐานตัวเลขระหว่างระบบต่างๆ
ไวยากรณ์
CONV(number, from_base, to_base)
Hex -> Decimal: CONV(hex_value, 16, 10)
ตัวอย่างการใช้งาน
แปลงโดยตรงด้วย SELECT:
SELECT CONV('A', 16, 10) AS DecimalResult; -- 10
SELECT CONV('AB', 16, 10) AS DecimalResult; -- 171
สร้าง Stored Procedure สำหรับแปลง Hex เป็น Decimal:
DELIMITER //
CREATE PROCEDURE SP_HEX_TO_DEC(HEXVALUE VARCHAR(10))
BEGIN
DECLARE Decimalvalue INTEGER;
SET Decimalvalue = CONV(HEXVALUE, 16, 10);
SELECT Decimalvalue;
END //
DELIMITER ;
เรียกใช้ Stored Procedure:
CALL SP_HEX_TO_DEC('A'); -- ผลลัพธ์: 10
หลักการแปลง Hex เป็น Decimal
Hex: A=10, B=11, C=12, D=13, E=14, F=15
AB (hex) = 10×16¹ + 11×16⁰ = 160 + 11 = 171 (decimal)
การแปลงฐานอื่นๆ
| การแปลง | คำสั่ง | ตัวอย่าง |
|---|---|---|
| Hex -> Decimal | CONV(hex, 16, 10) | CONV('FF', 16, 10) = 255 |
| Decimal -> Hex | CONV(dec, 10, 16) | CONV(255, 10, 16) = 'FF' |
| Binary -> Decimal | CONV(bin, 2, 10) | CONV('1010', 2, 10) = 10 |
| Decimal -> Binary | CONV(dec, 10, 2) | CONV(10, 10, 2) = '1010' |
| Octal -> Decimal | CONV(oct, 8, 10) | CONV('77', 8, 10) = 63 |
Hex Literals ใน MySQL
สามารถเขียน hex literal โดยตรงได้:
SELECT 0x41; -- 'A' (character)
SELECT x'41'; -- 'A' (character)
SELECT 0x41+0; -- 65 (numeric value)
การใช้งานจริง
- จัดการสี (Color codes): #FF0000 -> RGB
- Encoding/Decoding ข้อมูล binary
- Bitwise operations
- UUID/GUID manipulation