Mysql
 sql >> Database >  >> RDS >> Mysql

differenza tra UNHEX e X (MySQL)

UNHEX() è una funzione , quindi puoi fare qualcosa come

SET @var = '41';
SELECT UNHEX(@var);
SELECT UNHEX(hex_column) FROM my_table;

X , d'altra parte, è la sintassi per un letterale esadecimale . Non puoi farlo:

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

Questo spiega perché ottieni sempre prestazioni migliori con X :stai usando un costrutto di linguaggio invece di una chiamata di funzione. X non ha bisogno di valutare una variabile, poiché si aspetta una stringa letterale.