gpt4 book ai didi

mysql - UNHEX 和 X (MySQL) 的区别

转载 作者:IT王子 更新时间:2023-10-29 00:32:10 26 4
gpt4 key购买 nike

在处理数据库中的十六进制值时,MySQL UNHEX 和 X 之间的真正区别是什么?

例如。

SELECT * FROM test WHERE guidCol IN (UNHEX('hexadecimalstring'));

SELECT * FROM test WHERE guidCol IN (X'hexadecimalstring');

两者都给我准确的结果集。那么有什么区别吗?性能影响?

编辑 guidCol 的底层类型当然是二进制

最佳答案

UNHEX()a function ,因此您可以执行类似

的操作
SET @var = '41';
SELECT UNHEX(@var);
SELECT UNHEX(hex_column) FROM my_table;
另一方面,

Xhexadecimal litteral 的语法。 .你不能这样做:

SET @var = '41';
SELECT X@var; -- 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 不需要计算变量,因为它需要一个文字字符串。

关于mysql - UNHEX 和 X (MySQL) 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11176249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com