UNHEX() 関数
です 、したがって、
SET @var = '41';
SELECT UNHEX(@var);
SELECT UNHEX(hex_column) FROM my_table;
X 一方、は16進数リテラルの構文です。
。これはできません:
SET @var = '41';
SELECT example@sqldat.com; -- 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
これは、Xで常にパフォーマンスが向上する理由を説明しています :関数呼び出しの代わりに言語構造を使用しています。 X リテラル文字列を想定しているため、変数を評価する必要はありません。