J'obtiens cette erreur lors du développement de la procédure stockée
La conversion implicite de la valeur varchar en varchar ne peut pas être effectuée car le classement de la valeur n'est pas résolu en raison d'un conflit de classement.
déclaration est comme ça
Select City COLLATE DATABASE_DEFAULT AS Place, State, Country FROM DEPT1
UNION ALL
Select '' AS Place, 'Arizona' As State, Country FROM DEPT2
mais si le faire, cela donne également la même erreur
Select City COLLATE DATABASE_DEFAULT AS Place, State, Country FROM DEPT1
UNION ALL
Select '' COLLATE DATABASE_DEFAULT AS Place, 'Arizona' As State, Country FROM DEPT2
En fait, ce code est écrit par quelqu'un d'autre et je suis en train de le modifier, je ne sais pas pourquoi il a ajouté COLLATE DATABASE_DEFAULT mais si je le supprime, il donne également la même erreur
La conversion implicite de la valeur varchar en varchar ne peut pas être effectuée car le classement de la valeur n'est pas résolu en raison d'un conflit de classement.
Vous auriez probablement besoin de COLLATE aux deux endroits.
Select City COLLATE DATABASE_DEFAULT AS Place, State, Country FROM DEPT1
UNION ALL
Select '' COLLATE DATABASE_DEFAULT AS Place, 'Arizona' As State, Country FROM DEPT2
Edit: Vous pouvez en avoir besoin sur chaque chaîne si vous l'obtenez en un seul endroit
Select
City COLLATE DATABASE_DEFAULT AS Place,
State COLLATE DATABASE_DEFAULT AS State,
Country COLLATE DATABASE_DEFAULT AS Country
FROM DEPT1
UNION ALL
Select
'' COLLATE DATABASE_DEFAULT,
'Arizona' COLLATE DATABASE_DEFAULT ,
Country COLLATE DATABASE_DEFAULT
FROM DEPT2
Edit2:
Cela se produit car le classement de vos colonnes est probablement différent du classement de votre base de données. Ainsi, "City" a un classement mais les constantes de chaîne en ont un autre.
ALTER TABLE DEPT1 et DEPT2 afin que les définitions de tables résultantes ne contiennent aucun COLLATE