如何比较SQL SERVER 2008中的两个varbinary(max)字段

时间:2011-09-07 09:49:18

标签: sql-server-2008

我有一个函数,它检查两个值是否相等并返回。我用它来只更新已更改的列。我有一个varbinary(max)列,我想比较。

CREATE FUNCTION [dbo].[GetIfValuesEqual]
(
  @value1 VARCHAR(MAX) ,
  @value2 VARCHAR(MAX)
)
RETURNS BIT
AS 
BEGIN
    DECLARE @result BIT
    IF @value1 IS NULL
        AND @value2 IS NULL 
        SET @result = 0  
    IF @value1 IS NULL
        AND @value2 IS NOT NULL 
        SET @result = 1
    IF @value1 IS NOT NULL
        AND @value2 IS NULL 
        SET @result = 1
    IF @value1 = @value2 
        SET @result = 0
    IF @value1 <> @value2 
        SET @result = 1
    RETURN @result
END
GO

每当我用它来比较时

DECLARE @PatientChartImage AS VARBINARY(MAX)
DECLARE @PatientChartImageActual AS VARBINARY(MAX)

SELECT @PatientChartImage=PatientChartImage,@PatientChartImageActual='Same Binary'
IF dbo.GetIfValuesEqual(@PatientChartImage, @PatientChartImageActual) = 1 
  BEGIN    
    PRINT 'Equal'    
  END
ELSE
  BEGIN
    PRINT 'unEqual'
  END    

即使@PatientChartImage和@PatientChartImageActual完全相同的二进制文件,此代码仍会打印unEqual。有没有其他比较varBinary(max)的方法。请建议。

0 个答案:

没有答案