带有二进制的SQL WHERE子句

Joh*_*son 11 sql sql-server where

我有一个带有varbinary(max)列的SQL Server数据库表(即Data VarBinary(max)create table命令中).

是否可以where在二进制数据中使用某种模式匹配来执行子句?

例如,使用C#.NET SqlCommand对象,我发现我可以执行查询select * from TableName where Data = 0x4638763849838709 go,其中值是完整数据列值.但我希望能够模拟匹配部分数据,比如select * from TableName where Data = 0x%3876% go.

谢谢.

Mar*_*ith 11

对于您在问题中给出的示例

WITH t(c) AS
(
SELECT CAST(0x4638763849838709 AS VARBINARY(MAX)) 
)
SELECT *
FROM t
WHERE CHARINDEX(0x3876,c) > 0
Run Code Online (Sandbox Code Playgroud)


Ode*_*ded 4

SQL Server 不提供任何字段搜索功能VARBINARY,因此这是不可能的。

请参阅相关的 SO 问题和答案。

本质上,您需要提取二进制信息并使用了解其格式的工具来搜索它。它不能直接在 SQL Server 中完成。