2011-07-11 33 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