Warum ignoriert der SQL Server den leeren Speicherplatz am Ende automatisch?

8

Ich habe eine Abfrage geschrieben

%Vor%

durch falsches Tippen. Aber ich habe festgestellt, dass das Ergebnis genauso ist wie

%Vor%

Es scheint, dass der leere Bereich am Ende von SQL Server automatisch ignoriert wird.

Kann mir jemand sagen warum?

FYI, die Spalte UserName hat den Typ nvarchar(MAX) .

    
Jailu Lee 26.07.2013, 08:25
quelle

2 Antworten

15

SQL Server folgt dem ANSI / ISO-Standard für den Zeichenfolgenvergleich.

Der Artikel Wie SQL Server Strings mit nachgestellten Leerzeichen vergleicht erklärt dies im Detail.

  

SQL Server folgt der ANSI / ISO SQL-92-Spezifikation ... wie   Zeichenketten mit Leerzeichen vergleichen Der ANSI-Standard erfordert ein Padding für   die Zeichenfolgen, die in Vergleichen verwendet werden, damit ihre Längen übereinstimmen   bevor Sie sie vergleichen. Das Padding beeinflusst direkt die Semantik von   WHERE- und HAVING-Klauselprädikate und andere Transact-SQL-Zeichenfolgen   Vergleiche. Zum Beispiel berücksichtigt Transact-SQL die Zeichenfolgen 'abc' und   'abc' ist für die meisten Vergleichsoperationen gleichwertig.

Wenn Sie mit LIKE vergleichen, erhalten Sie, wie im Artikel erklärt, dieses Verhalten nicht .

    
Ian Preston 26.07.2013, 08:30
quelle
3

Wenn Sie so versuchen

%Vor%

leere Leerzeichen werden SQL Server ignoriert. Aber wenn du es so versuchst

%Vor%

Betrachtet die leeren Räume auch.

%Vor%

Das Ergebnis der obigen Abfrage ist

    
Nithesh 26.07.2013 08:45
quelle

Tags und Links