如何比较SQL Server中where子句中的varbinary

Nar*_*ara 3 sql comparison bytearray varbinary sql-server-2008

我想比较varbinary类型和字节数组.我到目前为止尝试过:

DECLARE @data AS NVARCHAR(MAX)='4283'

Select * from table1 Where bindayData=CAST(@data AS VARBINARY)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

我注意到一个奇怪的行为:当我静态地使用它时

Select * from table1 Where bindayData=CAST('4283' AS VARBINARY)
Run Code Online (Sandbox Code Playgroud)

然后它工作正常.但是当我声明一个变量时,它不起作用.

请分享您的想法.

谢谢,Naresh Goradara

gbn*_*gbn 9

尝试

DECLARE @data AS NVARCHAR(MAX)='4283'
Run Code Online (Sandbox Code Playgroud)

字符串常量'4283'在CAST中是非unicode,每个字符一个字节.
这给出了4个字节varbinary0x34323833

当您使用NVARCHAR(MAX)时,它会更改为N'4283'每个字符2个字节的unicode 字符串.
这给出了8个字节varbinary,类似于 0x0034003200380033

  • 例如gbn说SELECT'4283',N'4283',CAST('4283'AS VARBINARY),CAST(N'4283'AS VARBINARY) (2认同)