Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Unterschied zwischen UNHEX und X (MySQL)

UNHEX() ist eine Funktion , daher können Sie so etwas wie

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

X , andererseits ist die Syntax für ein hexadezimales Literal . Folgendes ist nicht möglich:

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

Dies erklärt, warum Sie mit X immer eine bessere Leistung erzielen :Sie verwenden ein Sprachkonstrukt anstelle eines Funktionsaufrufs. X muss keine Variable auswerten, da es einen literalen String erwartet.