Ich glaube, die Antwort auf diese Frage ist "nein", aber ich bin an der Meinung der Gemeinschaft interessiert. Ein VARCHAR- oder NVARCHAR-Wert sollte nachfolgende Leerzeichen automatisch abschneiden, daher glaube ich nicht, dass ich RTRIM () jemals für einen solchen Wert aufrufen muss. Hat ein Experte einen Grund, den ich brauchen würde?
(Falls die Tags dies nicht klarstellen, beziehe ich mich speziell auf Microsoft SQL Server.)
Wenn ANSI_PADDING aktiviert ist, werden abschließende Leerzeichen auch mit den Datentypen varchar / nvarchar gespeichert, also ja.
Sie müssen rtrim nicht brauchen, um die Werte in einer einfachen Auswahl zu erhalten, aber wenn Sie die Werte miteinander verknüpfen möchten (z. B. die Kombination von Vor- und Nachnamen, um den vollständigen Namen anzuzeigen), müssen Sie dies möglicherweise tun.
Führen Sie diesen Test aus, um zu sehen, was ich meine:
%Vor% In der Theorie ja, wegen SET ANSI_PADDING
, das standardmäßig aktiviert ist und wird Immer in der Zukunft.
Um ehrlich zu sein, tendiere ich dazu RTRIM zu schreiben, um zu vermeiden, dass ich beim Lesen öfter was weit vorstelle. Es muss nur einmal passieren, um Ihren Tag zu verwöhnen ...
SQL Server (und die meisten anderen SQL DBMS) sind wirklich scheiße, wenn es um solche Dinge geht:
%Vor%Angenommen, es gibt eine ID-Spalte oder etwas
Die Werte werden sich vergleichen, die gleiche Länge haben, aber nicht die gleichen Daten haben. Eine Verkettung
%Vor%und einer wird einen Platz haben, der andere wird nicht.
% (n)varchar
verwendet nur die Menge des verwendeten Speicherplatzes und sollte daher keinen Leerraum enthalten. Es wird normalerweise verwendet, wenn der zusätzliche Speicherplatz aus einem char
-Feld entfernt wird, das überzuordnen ist, d. H. Ein char(30)
mit nur 10 Zeichen.
Es kommt zum Beispiel darauf an, dass der Delphi-Client-Datensatz und midas.dll (mindestens Version 7 und früher (weiß jetzt nicht)) einen Fehler hatten, wenn die Länge der Daten in einem Nvarchar-Feld war weniger als die angegebene, wurden sie gepolstert.
War nicht so sehr ein Problem auf der Datenbankseite, aber bei den Kunden verursachte es uns nicht wenig Ärger.
Tags und Links sql sql-server tsql