SQL-String-Vergleich mit IF

8

Das mag eine dumme Frage sein, aber kann jemand erklären, warum SQL für

'False' zurückgibt %Vor%

gibt jedoch 'True' für

zurück %Vor%

Bearbeiten:

Ich verwende SQL Server 2008 R2

    
Grahamvs 16.01.2014, 14:31
quelle

2 Antworten

7

Nachgestellte Leerzeichen werden ignoriert.

Wenn Sie wirklich testen wollen, ob sie gleich sind, so etwas wie das:

%Vor%

WARUM dein Beispiel wahr ist:

Ссылка

Gemäß Ссылка :

%Vor%
    
Snake 16.01.2014, 14:33
quelle
2

Ich vermute, das liegt daran, dass die Datenbank nachstehende Leerzeichen abschneidet, aber keine führenden Leerzeichen.

Einige Dokumentationen unterstützen diese Vermutung.

  

SQL Server folgt der ANSI / ISO SQL-92-Spezifikation (Abschnitt 8.2,   , Allgemeine Regeln # 3) zum Vergleich von Strings   mit Leerzeichen. Der ANSI-Standard erfordert Auffüllen für das Zeichen   Zeichenfolgen, die in Vergleichen verwendet werden, damit ihre Längen vorher übereinstimmen   Vergleiche sie. Das Auffüllen wirkt sich direkt auf die Semantik von WHERE aus   und HAVING-Klausel Prädikate und andere Transact-SQL-Zeichenfolge   Vergleiche. Zum Beispiel berücksichtigt Transact-SQL die Zeichenfolgen 'abc' und   'abc' ist für die meisten Vergleichsoperationen gleichwertig.

    
Patrick Hofman 16.01.2014 14:33
quelle