UNHEX() apakah fungsi
, oleh karena itu Anda dapat melakukan sesuatu seperti
SET @var = '41';
SELECT UNHEX(@var);
SELECT UNHEX(hex_column) FROM my_table;
X , di sisi lain, adalah sintaks untuk literal heksadesimal
. Anda tidak dapat melakukan ini:
SET @var = '41';
SELECT example@sqldat.com; -- error (string litteral expected)
SELECT X'@var'; -- error (`@` is not a hexadecimal digit)
SELECT X(@var); -- returns NULL, not too sure about the reason... [edit: but this is probably why you are inserting NULL values]
SELECT X(hex_column) FROM my_table; -- returns NULL as well
Ini menjelaskan mengapa Anda selalu mendapatkan kinerja yang lebih baik dengan X :Anda menggunakan konstruksi bahasa alih-alih panggilan fungsi. X tidak perlu mengevaluasi variabel, karena mengharapkan string literal.