2010-09-29 4 views
6

to SQL Wenn ich laufen versuchen ...Querying für ae passt æ in SQL Server/LINQ

SELECT * FROM Users WHERE Username = 'ae' es Übereinstimmungen gibt, wo der Benutzername æ (ash-Zeichen) ist.

Ich frage mich, ob es eine Möglichkeit gibt, Charaktere wie die Asche Charakter zu unterstützen, aber ein genau Spiel für das, was ich suche.

Ich mag für ae suchen und nur ae, nicht ae und æ

Ich bin mit SQL Server 2008 und SQL Server 2008 R2 erhalten.

+0

vielleicht ich immer bin nicht geschehen, was Sie wollen. Wollte man Instanzen von 'ae' als zwei Zeichen' ae' und das einzelne Zeichen 'æ' betrachten? –

+0

@ p.campbell wenn ich nach ae suche Ich will nur das Literal ae und nicht haben Sie Übereinstimmung æ –

Antwort

2

Dies scheint nicht mit SQL-Sortierungen

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

Als ich Ihr Beispiel reproduzieren konnte, aber nicht in meiner Anwendung verwendete, fing ich an herumzuspielen. Wenn Sie Ihren Strings "N" voranstellen, bricht der Code ab. Also anscheinend hat es etwas mit 'VARCHAR' gegenüber' NVARCHAR' zu tun. Kann jemand das erklären (oder auf eine Ressource zeigen)? – Brad

0

Sie können eine ordinale Sortierung für Ihren Vergleich verwenden. Zum Beispiel:

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

Das macht die Abfrage Groß-und Kleinschreibung, gibt es sowieso beide zu haben? –