Type d'opérage Clash

J'ai une longue procédure stockée et lorsque j'exécute la procédure j'obtiens l'erreur suivante:

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

Afin de dépanner j'ai imprimé satetement où est le problème et le code est:

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]

Alors, Quand j'exécute l'instruction ci-dessus, il est givng moi l'erreur:

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

Le type de données de Nom est de type Varchar(MAX) dans la réf.dbo.datatables table

Comment résoudre ce problème?

Réponse:

C'est ce que j'ai fait pour travailler:

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]

source d'informationauteur peter