如何在SQL Server中比较图像数据类型

时间:2010-10-25 15:52:29

标签: sql-server

我在编写select语句时遇到很多麻烦来比较t-sql中属于image类型的两个值。这就是我到目前为止所做的:

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 Web(我认为它是2008版)......

谢谢!

安德鲁

2 个答案:

答案 0 :(得分:1)

您无法在图片类型上使用binarychecksum

  

BINARY_CHECKSUM忽略列   其中的不可比数据类型   计算。不可比较的数据类型   包括text,ntext,image,cursor,   xml和不可比的通用语言   运行时(CLR)用户定义的类型。

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

将MD5与图像一起存储可能更容易。我无法想象你通过请求所有图像的binary_checksum来获得良好的性能!

答案 1 :(得分:0)

你能这样做吗?

   select BINARY_CHECKSUM(A.PropertyValuesBinary) from aspnet_Profile as A

了解错误消息的#会帮助我们。