我有一个十六进制 (varbinary) 类型的 SQL 条目,我想对所有具有此十六进制值以 1 结尾的条目执行 SELECT COUNT。
我正在考虑使用 CONVERT 将十六进制转换为字符,然后使用 WHERE my_string LIKE "%1"。问题是 varchar 的上限为 8000 个字符,而我的十六进制比这更长。
我有什么选择?
最佳答案
Varbinary 实际上可以与一些字符串操作函数配合使用,尤其是 substring
。所以你可以使用例如:
select substring(yourBinary, 1, 1);
获取二进制列的第一个字节。要获得最后一点,您可以使用以下命令:
select substring(yourBinary, len(yourBinary), 1) & 1;
如果该位关闭,则返回 0;如果打开,则返回 1。
但是,如果您确实只需要检查最多最后 4-8 个字节,则可以轻松地直接在列上使用按位运算符:
select yourBinary & 1;
最后一点,这会相当慢。因此,如果您打算经常对大量数据执行此操作,那么最好只是为此创建另一个可以索引的 bit
列。如果您正在谈论最多一千行左右,或者如果您不关心速度,请开火:)
关于sql-server - 检查 SQL 中十六进制的最后一位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21992411/