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

Oracle-Datentyp:Soll ich VARCHAR2 oder CHAR verwenden

Ich bin besorgt über zusätzliche Leerzeichen in den VARCHAR2-Feldern und über Vergleichsprobleme. Ich weiß, dass es Möglichkeiten gibt, sie zu vergleichen, indem man sie kürzt oder konvertiert, aber ich fürchte, das wird meinen Code chaotisch und fehlerhaft machen.

Es ist eigentlich genau das Gegenteil. Die Verwendung von CHAR zwingt Ihre Zeichenfolgen zu einer festen Länge, indem sie mit Leerzeichen aufgefüllt werden, wenn sie zu kurz sind. Wenn Sie also CHARs mit regulären Zeichenfolgen in einer beliebigen App vergleichen, die die Daten verwendet, müsste diese App jedes Mal einen Trimm hinzufügen. Mit anderen Worten, VARCHAR2 ist die Wahl, die natürlich zu saubererem Code führt.

Im Allgemeinen sollten Sie immer Verwenden Sie VARCHAR2, es sei denn, Sie haben einen ganz bestimmten Grund, warum Sie eine CHAR-Spalte möchten.

Wenn Sie sich Sorgen über Zeichenfolgen mit zusätzlichen Leerzeichen am Anfang oder am Ende machen, dann fallen Ihnen einige Optionen ein:

  • Stellen Sie sicher, dass der Prozess, der die Einfügungen ausführt, diese vor dem Einfügen zurechtschneidet.
  • Fügen Sie eine Check-Einschränkung für die Spalte hinzu, die sicherstellt, dass string =trim(string).
  • Fügen Sie einen Vorher-Einfügen-Trigger auf Zeilenebene hinzu, der die Strings beim Einfügen trimmt.
  • Stellen Sie sicher, dass Sie die Zeichenfolgen trimmen, wenn Sie die Tabelle abfragen