UNHEX()
là một chức năng
, do đó bạn có thể làm điều gì đó như
SET @var = '41';
SELECT UNHEX(@var);
SELECT UNHEX(hex_column) FROM my_table;
X
mặt khác, là cú pháp của litteral thập lục phân
. Bạn không thể làm điều này:
SET @var = '41';
SELECT [email protected]; -- 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
Điều này giải thích tại sao bạn luôn có được hiệu suất tốt hơn với X
:bạn đang sử dụng một cấu trúc ngôn ngữ thay vì một lời gọi hàm. X
không cần đánh giá một biến, vì nó cần một chuỗi nhỏ.