2011-07-11 37 views
3

我想将varbinary类型与字节数组进行比较。我已尝试到目前为止:如何在SQL Server中的where子句中比较varbinary

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

Select * from table1 Where bindayData=CAST(@data AS VARBINARY) 

但这不起作用。

我注意到的这一个奇怪的现象:当我使用静态像

Select * from table1 Where bindayData=CAST('4283' AS VARBINARY) 

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

请分享你的想法。

谢谢, 纳雷什Goradara

+3

除了GBN的答案,你应该知道,铸造'VARBINARY'没有长度说明[限制长度30](http://msdn.microsoft。 COM/EN-US /库/ ms188362.aspx)。 –

回答

8

尝试

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

的字符串常量'4283'是非unicode在CAST,每个字符的一个字节。
这给出了4个字节的varbinary 0x34323833

当您使用NVARCHAR(MAX),则改变为UNICODE N'4283'串每个字符2个字节。
这给8个字节VARBINARY,像0x0034003200380033

+2

gbn表示SELECT'4283',N'4283',CAST('4283'作为VARBINARY),CAST(N'4283'作为VARBINARY) – niktrs