2010-10-05 51 views
23

me conseguir este error mientras se desarrolla el procedimiento almacenadoSQL Server error "Conversión implícita de porque la intercalación del valor no se ha resuelto debido a un conflicto de intercalación".

conversión implícita del valor varchar a varchar no se puede realizar debido a la intercalación del valor no se ha resuelto debido a un conflicto de intercalación.

declaración es como esto

Select City COLLATE DATABASE_DEFAULT AS Place, State, Country FROM DEPT1 
UNION ALL 
Select '' AS Place, 'Arizona' As State, Country FROM DEPT2 

pero Si Si hacer esto que también dan el mismo error

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 realidad, este código está escrito por alguien más y la que acaba de editar el código, No sé por qué agregó COLLATE DATABASE_DEFAULT pero si lo elimino también da el mismo error

La conversión implícita del valor varchar a varchar no se puede realizar porque la intercalación del valor no se ha resuelto debido a un conflicto de intercalación.

Respuesta

46

Lo más probable es que necesite COLLAR en ambos lugares.

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 

Editar: puede que necesite en cada cuerda si se obtiene en un lugares

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:

Esto sucede porque su intercalación de columna es probablemente diferente a su intercalación de base de datos. Entonces "Ciudad" tiene una colación, pero las constantes de cadena tienen otra.

+0

sí ... pero también da el mismo error – Azhar

+1

¿Cómo puedo eliminar esta DATABASE_DEFAULT INTERCALAR en absoluto de mi declaración ... ¿por qué ¿Es obligatorio utilizar esto? En realidad, hay 45 columnas en una declaración y sobre la unión TODAS las 6 declaraciones y más de la mitad son cadenas ... – Azhar

+0

Este fue un buen consejo para mí, cuando estaba tratando de seleccionar-de un par de tablas SYS (o vistas) para averiguar qué concesiones de permisos se han otorgado a todos mis inicios de sesión de servidor (principales). – NateJ

1

ALTER TABLE DEPT1 y DEPT2 de manera que resultan las definiciones de las tablas no contienen ninguna INTERCALAR

Cuestiones relacionadas