Wie funktioniert der SQL Server-Platzhalterzeichenbereich, z. B. [A-D], bei der Groß- / Kleinschreibung?

9

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)

%Vor%     
Simon Tewsi 07.12.2011, 04:47
quelle

4 Antworten

11

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.

Von BOL

  

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.

    
Martin Smith 07.12.2011, 08:30
quelle
10

Es kann auf jede Art gemacht werden:

a. Verwenden Sie COLLATE , während Sie die Tabelle wie folgt erstellen:

%Vor%

b. Verwenden Sie COLLATE , während Sie Daten als

auswählen %Vor%     
Elias Hossain 07.12.2011 07:40
quelle
3

probiere

aus %Vor%     
Igor Borisenko 07.12.2011 05:25
quelle
0

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.

    
onedaywhen 07.12.2011 07:03
quelle

Tags und Links