Mysql
 sql >> Base de données >  >> RDS >> Mysql

différence entre UNHEX et X (MySQL)

UNHEX() est une fonction , donc vous pouvez faire quelque chose comme

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

X , d'autre part, est la syntaxe d'un littéral hexadécimal . Vous ne pouvez pas faire ceci :

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

Cela explique pourquoi vous obtenez toujours de meilleures performances avec X :vous utilisez une construction de langage au lieu d'un appel de fonction. X n'a pas besoin d'évaluer une variable, puisqu'il attend une chaîne littérale.