2010-01-05 10 views
7

Quiero filtrar registros en 'Correo electrónico' mi consulta es así.Cómo cotejar SQL_Latin1_General_CP1_CI_AS utilizando el operador IN

SELECT * FROM #temp WHERE email NOT IN (SELECT email FROM Customer) 

Me da siguiente error

No se puede resolver el conflicto de intercalación entre " SQL_Latin1_General_CP1_CI_AS" y " Latin1_General_CI_AS" en el igual a la operación.

Puedo usar la intercalación si hay un operador igual (=) en lugar de IN. Pero usar Collate aquí me da un error de sintaxis.

SELECT * FROM #temp donde el correo electrónico NO EN (SELECT correo electrónico de atención al cliente) cotejar SQL_Latin1_General_CP1_CI_AS

¿Cómo puedo resolver este. No puedo soltar y volver a crear tablas porque es live db.

datos de la Tabla #temp es desde SQL Server 2000 y tabla de clientes es en SQL Server 2005

Gracias.

Respuesta

15
... 
NOT IN (SELECT email COLLATE SQL_Latin1_General_CP1_CI_AS AS email FROM Customer) 

El bit de clasificación sigue el nombre de la columna, básicamente.

O esto (que depende de cuál de ellos desea):

SELECT * FROM #temp WHERE email collate SQL_Latin1_General_CP1_CI_AS NOT IN (SELECT email FROM Customer) 

Por último, si su base de datos es SQL_Latin1_General_CP1_CI_AS, una opción es utilizar ...COLLATE Database_Default... de coaccionar a un valor predeterminado.

Cuestiones relacionadas