sql >> Base de Datos >  >> RDS >> Mysql

diferencia entre UNHEX y X (MySQL)

UNHEX() es una función , por lo tanto, puedes hacer algo como

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

X , por otro lado, es la sintaxis para un literal hexadecimal . No puedes hacer esto:

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

Esto explica por qué siempre obtienes un mejor rendimiento con X :está utilizando una construcción de lenguaje en lugar de una llamada de función. X no necesita evaluar una variable, ya que espera una cadena literal.