2011-07-11 28 views
3

varbinary型とバイト配列を比較したいと思います。私はこれまで試みている:SQL Serverのwhere句でvarbinaryを比較する方法

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

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

しかし、これは動作しません。

私はこれの1つの奇妙な行動に注意してください。私は静的

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

のようにそれを使用する場合、それは正常に動作します。しかし、変数を宣言すると、それは機能しません。

あなたのアイデアをお伝えください。

おかげで、 ネアシュGoradara

+3

のようなものを与え、あなたは長さ指定なしVARBINARY' 'にキャストすると、[30への長さを制限]ことに注意してください(http://msdn.microsoft。 com/ja-us/library/ms188362.aspx)。 –

答えて

8

'4283'文字列定数

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

を試してみて、CASTに文字あたり1バイト非Unicodeです。
これは

あなたはNVARCHAR(MAX)を使用する4バイトのvarbinary 0x34323833を与え、それは文字ごとに2バイトのN'4283'文字列をUnicodeに変更しました。
これは、8バイトのvarbinary型、GBNの答えに加えて0x0034003200380033

+2

gbnとは何かの例SELECT '4283'、N'4283 '、CAST(' 4283 'AS VARBINARY)、CAST(N'4283' AS VARBINARY) – niktrs