我有一个函数,它检查两个值是否相等并返回。我用它来只更新已更改的列。我有一个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)的方法。请建议。