字符串输入与SQL WHERE中的二进制字段匹配

时间:2011-10-18 22:18:10

标签: sql sql-server-2008

以下是该方案: 我有一个SQL select语句,它返回一个二进制数据对象作为字符串。这是无法改变的,它超出了我可以修改的范围。 例如,它将返回'1628258DB0DD2F4D9D6BC0BF91D78652'。

如果我在查询中手动在此字符串前面添加0x,我将检索我正在寻找的结果,例如: SELECT a,b FROM mytable WHERE uuid = 0x1628258DB0DD2F4D9D6BC0BF91D78652 我的结果集是正确的。

但是,我需要找到一个Microsoft SQL Server 2008兼容的方法来以编程方式执行此操作。简单地将0x连接到字符串变量不起作用。很明显,但我确实尝试过。

请帮助:) 谢谢 标记

1 个答案:

答案 0 :(得分:3)

我对您的问题的理解是,您有uuid列,binary

您正尝试在uuid中选择具有特定值的行,但您尝试使用这样的字符串:

SELECT a, b FROM mytable WHERE uuid = '0x1628258DB0DD2F4D9D6BC0BF91D78652'

哪个不起作用。如果这是正确的,您可以使用样式为2的CONVERT函数让SQL Server将字符串视为十六进制,并且不需要'0x'作为第一个字符:

SELECT a, b 
FROM mytable 
WHERE uuid = CONVERT(binary(16), '1628258DB0DD2F4D9D6BC0BF91D78652', 2)