Как сравнить два поля varbinary (max) в SQL SERVER 2008 - PullRequest
0 голосов
/ 07 сентября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...