2010-10-25 61 views
3

我在寫一個select語句來比較t-sql中的兩個類型爲image的值時遇到了很多麻煩。這是我到目前爲止:如何在SQL Server中比較圖像數據類型

SELECT a.UserId, b.UserId 
FROM [dbo].[aspnet_Profile] as a inner join [dbo].[aspnet_Profile] as b on 
    (a.UserId = <some string> AND b.UserId = <some other string>) 
WHERE BINARY_CHECKSUM(a.PropertyValuesBinary) = BINARY_CHECKSUM(b.PropertyValuesBinary) 

但我不斷收到錯誤消息,無論我對WHERE子句做什麼。對於上面的查詢,我得到的錯誤消息是:

binarychecksum中的錯誤。在 binarychecksum輸入中沒有 類似的列。

無論如何,任何幫助將非常感激。我有一個非常艱難的時間做任何與此數據類型,出於某種原因...

BTW:我使用的是SQL Server的網絡(我認爲這是2008年版)...

謝謝!

Andrew

回答

0

你能這樣做嗎?

select BINARY_CHECKSUM(A.PropertyValuesBinary) from aspnet_Profile as A 

瞭解錯誤信息的#將幫助我們幫助您。

+0

您好,蒂姆,感謝您的想法。使用上面的select語句得到的錯誤消息是: – Andrew 2010-10-25 16:04:31

+0

Msg 8184,級別16,狀態1,行1 binarychecksum中的錯誤。在binarychecksum輸入中沒有可比較的列。 – Andrew 2010-10-25 16:05:02

1

不能對圖像類型使用binarychecksum

BINARY_CHECKSUM忽略其 計算 不可比數據類型的列。不可比較的數據類型 包括文本,ntext,圖像,光標, xml和不可比較的通用語言 運行時(CLR)用戶定義的類型。

http://msdn.microsoft.com/en-us/library/ms173784.aspx

這可能是更容易存儲MD5沿着與圖像。我無法想象你通過請求所有圖像的binary_checksum獲得了良好的性能!

+0

感謝您的提示,亞當。我正在使用Sql Server Management Studio,我只想比較表中的兩個值。這是一次性計算,它不是任何代碼的一部分。有沒有辦法在t-sql中做到這一點,而不需要下載任何MD5的外部實現? t-sql是否實現MD5?我不是一個真正的DBA或任何東西...... – Andrew 2010-10-25 16:20:14