我有一个数据库,它使用VARBINARY(18)类型的字段来存储主键
A sample PK: 0x001B7431C732005C4785A14F168EBD1FC5E4
当我尝试运行一个简单的查询,例如
SELECT * FROM mytable WHERE ID = '0x001B7431C732005C4785A14F168EBD1FC5E4'
我没有得到任何结果,即使我可以在 mytable 中看到PK。
有谁知道为什么会发生这种情况以及如何解决这个问题?我正在使用SQL 2008 R2。
谢谢!
答案 0 :(得分:5)
不要使用引号。
表示字符串文字而不是二进制文字。它的作用是使用默认排序规则的代码页将所有二进制列数据隐式转换为字符串。这不匹配。
以下是您所需要的一切。
SELECT *
FROM mytable
WHERE ID = 0x001B7431C732005C4785A14F168EBD1FC5E4