Di MySQL, UNHEX()
fungsi memungkinkan Anda untuk "menghapus" string di MySQL. Dengan kata lain, ini memungkinkan Anda untuk mengonversi nilai heksadesimal menjadi string yang dapat dibaca manusia.
Secara khusus, fungsi menafsirkan setiap pasangan karakter dalam argumen sebagai angka heksadesimal dan mengubahnya menjadi byte yang diwakili oleh angka tersebut. Nilai yang dikembalikan adalah string biner.
Sintaks
Sintaksnya seperti ini:
UNHEX(str)
Dimana str
adalah string yang akan di-unhex.
Contoh 1 – Penggunaan Dasar
Berikut ini contoh dasarnya:
SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed;
Hasil:
+--------------+ | Unhexed | +--------------+ | Coconut palm | +--------------+
Jadi saya memberikan nilai hex sebagai argumen, dan fungsinya menghapus nilai itu dan mengembalikan hasilnya (yang merupakan string biner).
Contoh 2 – Mengonversi String ke Heksadesimal
Kita juga dapat melakukan kebalikannya dengan menggunakan HEX()
fungsi untuk mengubah string menjadi nilai heksadesimal:
SELECT HEX('Coconut palm') AS Hexed;
Hasil:
+--------------------------+ | Hexed | +--------------------------+ | 436F636F6E75742070616C6D | +--------------------------+
Oleh karena itu, kita dapat menumpuk satu fungsi di dalam fungsi lainnya, dan kita hanya akan mendapatkan kembali argumen kita:
SELECT UNHEX(HEX('Coconut palm')) AS 'Result 1', HEX(UNHEX('436F636F6E75742070616C6D')) AS 'Result 2';
Hasil:
+--------------+--------------------------+ | Result 1 | Result 2 | +--------------+--------------------------+ | Coconut palm | 436F636F6E75742070616C6D | +--------------+--------------------------+
Contoh 3 – Karakter Heksadesimal Tidak Valid
Argumen harus berisi karakter heksadesimal yang valid. Jika salah satu karakter bukan karakter hex yang valid, hasilnya adalah NULL
:
SELECT UNHEX(' '), UNHEX('_xyz');
Hasil:
+------------+---------------+ | UNHEX(' ') | UNHEX('_xyz') | +------------+---------------+ | NULL | NULL | +------------+---------------+
Contoh 4 – Argumen Numerik
UNHEX()
fungsi tidak bekerja pada nilai numerik yang setara dengan heksadesimal.
Ini contoh yang saya maksud:
SELECT HEX(1234), UNHEX('4D2');
Hasil:
+-----------+--------------+ | HEX(1234) | UNHEX('4D2') | +-----------+--------------+ | 4D2 | ? | +-----------+--------------+
Cara lain untuk menunjukkan ini adalah:
SELECT UNHEX(HEX(1234));
Hasil:
+------------------+ | UNHEX(HEX(1234)) | +------------------+ | ? | +------------------+
Jadi ini menunjukkan kepada kita bahwa ekuivalen heksadesimal dari 1234 adalah 4H2 , dan UNHEX()
fungsi tidak dapat menangani nilai tersebut.
Dalam kasus seperti itu, Anda dapat menggunakan CONV()
fungsi sebagai gantinya:
SELECT HEX(1234), CONV('4D2', 16, 10), CONV(HEX(1234), 16, 10);
Hasil:
+-----------+---------------------+-------------------------+ | HEX(1234) | CONV('4D2', 16, 10) | CONV(HEX(1234), 16, 10) | +-----------+---------------------+-------------------------+ | 4D2 | 1234 | 1234 | +-----------+---------------------+-------------------------+
Dalam contoh ini, kami menggunakan CONV()
untuk mengonversi nilai dari basis-16 (heksadesimal) ke basis-10 (desimal).