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

Unterschied zwischen VARCHAR2(10 CHAR) und NVARCHAR2(10)

Der Datentyp NVARCHAR2 wurde von Oracle für Datenbanken eingeführt, die Unicode für einige Spalten verwenden möchten, während sie für den Rest der Datenbank einen anderen Zeichensatz beibehalten (der VARCHAR2 verwendet). NVARCHAR2 ist ein reiner Unicode-Datentyp.

Ein Grund für die Verwendung von NVARCHAR2 könnte sein, dass Ihre DB einen Nicht-Unicode-Zeichensatz verwendet und Sie dennoch Unicode-Daten für einige Spalten speichern möchten, ohne den primären Zeichensatz zu ändern. Ein weiterer Grund könnte sein, dass Sie zwei Unicode-Zeichensätze verwenden möchten (AL32UTF8 für Daten, die hauptsächlich aus Westeuropa stammen, AL16UTF16 beispielsweise für Daten, die hauptsächlich aus Asien stammen), da unterschiedliche Zeichensätze dieselben Daten nicht gleichermaßen effizient speichern.

Beide Spalten in Ihrem Beispiel (Unicode VARCHAR2(10 CHAR) und NVARCHAR2(10) ) können dieselben Daten speichern, die Byte-Speicherung ist jedoch unterschiedlich. Einige Zeichenfolgen können in dem einen oder anderen effizienter gespeichert werden.

Beachten Sie auch, dass einige Funktionen mit NVARCHAR2 nicht funktionieren, siehe diese SO-Frage:

  • Oracle Text funktioniert nicht mit NVARCHAR2. Was könnte sonst nicht verfügbar sein?