У меня есть функция, которая проверяет два значения на равенство и возвращает.Я использую его для обновления только измененных столбцов.У меня есть столбец 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 точно одинаковы,этот код все еще печатает неравный.Есть ли другой способ сравнения varBinary (max).Пожалуйста, предложите.