Конфликт типов операндов

У меня есть длинная хранимая процедура, и когда я выполняю эту процедуру, я получаю следующую ошибку:

Msg 206, Level 16, State 2, Line 1
Operand type clash: varchar(max) is incompatible with sql_variant

Итак, для устранения неполадок я напечатал сообщение, где проблема, и код :

SELECT  'Name' ,
                7 ,
                CASE WHEN 'varchar' = 'varbinary'
                     THEN REPLACE(UPPER(sys.fn_sqlvarbasetostr([Name])), 'X', 'x')
                     ELSE CONVERT(VARCHAR(4000), [Name])
                END , 'varchar'
        FROM    ref.dbo.datatables
        WHERE   id = 12
        ORDER BY [ID]

Итак, когда я выполняю приведенный выше оператор, я получаю сообщение об ошибке:

Msg 206, Level 16, State 2, Line 1
Operand type clash: varchar(max) is incompatible with sql_variant

Тип данных имени - Varchar (MAX) в таблице ref.dbo.datatables

Как решить эту проблему?

Ответ:

Вот что я сделал для работы:

SELECT 'Name',
        7,
        CASE WHEN 'varchar' = 'varbinary'
        THEN REPLACE(UPPER(sys.fn_sqlvarbasetostr(CONVERT(VARBINARY,[Name]))),'X','x')
        ELSE CONVERT(VARCHAR(4000),[Name])
        END,
        'varchar'
FROM ref.dbo.datatables
WHERE id = 12
ORDER BY [ID]
11
задан peter 1 November 2011 в 21:21
поделиться