Kann jemand die Regeln dafür erklären, wie ein Platzhalterzeichenbereich, zB [A-D], mit einer Groß- / Kleinschreibung arbeitet?
Ich hätte folgendes gedacht:
%Vor%würde nur Datensätze zurückgeben, die mit einem Großbuchstaben A, B, C oder D beginnen, und Datensätze ausschließen, die mit Kleinbuchstaben a, b, c oder d beginnen.
In der Realität scheint es jedoch Datensätze zurückzugeben, die mit einem Großbuchstaben A beginnen, aber auch Datensätze, die mit B oder b, C oder c und D oder d beginnen. Es ist so, als würde nur das erste Zeichen des Bereichs die Groß- / Kleinschreibung beachten, und bei den übrigen Zeichen im Bereich wird nicht zwischen Groß- und Kleinschreibung unterschieden.
Auf der anderen Seite die folgenden
%Vor%Gibt nur Datensätze zurück, die mit einem Großbuchstaben A, B, C oder D beginnen. Trotzdem hätte ich gedacht, [A-D] wäre äquivalent zu [ABCD].
Ich erhalte die gleichen Ergebnisse in SQL Server 2005 und SQL Server 2008 R2.
Beispiel:
(Fügen Sie Anweisungen, die mit SQL Server 2008-Zeilenkonstruktoren geschrieben wurden, für die Kompaktheit ein. Wenn jedem Wert eine eigene INSERT-Anweisung zugewiesen wird, funktioniert das Skript in SQL Server 2005)
Sie benötigen eine binäre Sortierung, wie in Md. Elias Hossains Antwort .
Die Erklärung ist, dass die Bereiche in der Mustersyntax von Sortierungsregeln für Sortierung funktionieren.
Bei der Bereichssuche können die Zeichen im Bereich variieren abhängig von den Sortierregeln der Sortierung.
Also
%Vor%Gibt
zurück %Vor% Der Bereich A-D
schließt also a
aus, enthält jedoch die anderen 3 Kleinbuchstaben unter einer CS
-Kollation.
Es kann auf jede Art gemacht werden:
a. Verwenden Sie COLLATE
, während Sie die Tabelle wie folgt erstellen:
b. Verwenden Sie COLLATE
, während Sie Daten als
Die Verwendung einer Sortierung, bei der die Groß- und Kleinschreibung berücksichtigt wird, funktioniert für Suchzeichenfolgen, die sich nicht in einem Bereich befinden, z. das würde funktionieren:
%Vor%... aber klar, das ist kein akzeptabler Ansatz!
Wie andere vorgeschlagen haben, verwenden Sie Latin1_General_BIN
für Bereiche.
Tags und Links sql sql-server tsql