Sollte ich jemals RTRIM () für einen varchar oder nvarchar Wert aufrufen müssen?

8

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.)

    
John Bledsoe 01.11.2010, 19:12
quelle

7 Antworten

11

Wenn ANSI_PADDING aktiviert ist, werden abschließende Leerzeichen auch mit den Datentypen varchar / nvarchar gespeichert, also ja.

    
heisenberg 01.11.2010, 19:20
quelle
4

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%     
HLGEM 01.11.2010 19:19
quelle
3

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 ...

    
gbn 01.11.2010 19:21
quelle
1

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.

    
McKay 01.11.2010 19:21
quelle
0

% (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.

    
Dustin Laine 01.11.2010 19:20
quelle
0

Es gibt einen seltsamen Fall mit dem Operator LIKE . Zum Beispiel:

%Vor%

gibt kein Ergebnis zurück.

    
veljkoz 01.11.2010 19:20
quelle
0

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.

    
no_one 01.11.2010 19:21
quelle

Tags und Links