Oracle
 sql >> Datenbank >  >> RDS >> Oracle

SQL - Warum Leerzeichen beim Vergleichen von Zeichen auffüllen?

Sie verwechseln die verschiedenen Arten von Charakteren und was passiert. Wenn Sie Folgendes ausführen:

SELECT * from SOME_TABLE where CUSTOMER_NAME = 'Popeye '

Es werden keine Leerzeichen "zu jeder Zeile in SOME_TABLE" hinzugefügt. Die einzige Frage ist die Breite der Ergebnisse. Diese Breite wird durch die Eigenschaften der Spalten in SOME_TABLE festgelegt, nicht durch das, was in der WHERE-Klausel erscheint.

Wenn Ihr CUSTOMER_NAME als char(x)-Wert deklariert ist, muss die Zeichenfolge diese Länge haben. Angenommen, es ist char(10) und Sie weisen ihm 'Popeye' zu. Der Wert hat sechs Zeichen und muss irgendwie auf 10 aufgefüllt werden. Der SQL-Standard besteht darin, auf der rechten Seite aufzufüllen, wodurch der Wert 'Popeye ' entsteht .

Wenn Sie Zeichenfolgen variabler Länge wünschen, verwenden Sie varchar oder varchar2.