我有一个包含varbinary(max)
列的SQL Server数据库表(即create table
命令中的Data VarBinary(max)
)。
是否可以在二进制数据中使用某种模式匹配来执行where
子句?
例如,使用C# .NET SqlCommand
对象,我发现可以执行类似select * from TableName where Data = 0x4638763849838709 go
的查询,其中的值是完整的数据列值,但我希望能够只对部分数据进行模式匹配,例如select * from TableName where Data = 0x%3876% go
。
谢谢。
4条答案
按热度按时间bvuwiixz1#
就你在问题中所举的例子
eiee3dmh2#
SQL Server不提供任何搜索
VARBINARY
字段的函数,因此这是不可能的。参见this相关SO问题和答案。
从本质上讲,您需要提取二进制信息,并使用能够理解其格式的工具进行搜索,而这在SQL Server中无法直接完成。
m2xkgtsf3#
也许我应该用OP的例子:
**解释:**字符0x未添加到样式2转换结果的左侧。请参阅Microsoft文档以了解如何转换varbinary数据。
https://learn.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver16#binary-styles
2uluyalo4#
这里是瞎猜的,但是您可以先将字段转换为VARCHAR(MAX),然后使用LIKE语句进行比较。
例如