我在编写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版)......谢谢!
安德鲁
答案 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
了解错误消息的#会帮助我们。