2010-09-29 5 views
6

Cuando intento correr ...Consulta para AE Æ coincide en SQL Server/LINQ a SQL

SELECT * FROM Users WHERE Username = 'ae' vuelve partidos en el nombre de usuario es æ (carácter de ceniza).

Me preguntaba si hay una manera de admitir personajes como el personaje de ceniza pero obtener un exacto coincide con lo que estoy buscando.

me gustaría buscar y obtener ae ae simplemente, no ae y æ

estoy usando SQL Server 2008 y SQL Server 2008 R2.

+0

quizá ahora no recibo lo que está buscando. ¿Desea que las instancias de 'ae' se consideren dos caracteres' ae' Y el carácter único 'æ'? –

+0

@ p.campbell cuando busco ae Solo quiero el ae literal y no lo tengo que coincida æ –

Respuesta

2

Esto no parece suceder con intercalaciones de SQL

;with Users As 
(
select 'æ' as Username UNION ALL SELECT 'ae' 
) 
SELECT * 
FROM Users WHERE Username = 'ae' collate SQL_Latin1_General_CP1_CI_AS 
+0

Cuando pude reproducir tu ejemplo, pero no lo usé en mi aplicación, comencé a jugar. Si prefieres tus cadenas con 'N', el código se romperá. Entonces, aparentemente tiene algo que ver con 'VARCHAR' contra' NVARCHAR' también. ¿Alguien puede explicar eso (o señalar a un recurso)? – Brad

0

Puede utilizar una intercalación ordinal para su comparación. Por ejemplo:

SELECT * 
FROM Users 
WHERE Username = 'ae' COLLATE Latin1_General_BIN 
+0

Esto hace que la consulta distinga entre mayúsculas y minúsculas, ¿hay alguna forma de tener ambas? –