it-swarm.com.de

Was ist das Äquivalent von varchar (max) in Oracle?

Was ist das Äquivalent von varchar (max) in Oracle?

CLOB?

39
YourMomzThaBomb

Varchars sind in Oracle auf 4000 Zeichen begrenzt. Ansonsten müssen Sie einen LONG oder einen CLOB verwenden. CLOBs bevorzugen. LONGs sind das ältere Äquivalent.

Von dieser Oracle-Dokumentation :

LOBs vs. LONG und LONG RAW

LOBs unterscheiden sich von älteren LONG und LONG RAW-Datentypen in vielerlei Hinsicht.

  • Die maximale Größe eines LOBs beträgt 4 Gigabyte gegenüber 2 Gigabytes für LONG und LANGE ROH.
  • Sie können sowohl wahlfreie als auch sequentielle Zugriffsmethoden für LOBs verwenden. Sie können nur sequentielle Zugriffsmethoden verwenden auf LANGE und LANGE ROH.
  • LOBs (mit Ausnahme von NCLOBs) können Attribute eines Objekttyps sein, den Sie definieren.
  • Tabellen können mehrere LOB-Spalten haben, aber nur ein LONG oder LANGE ROHSäule.

Migration bestehender LONG und LONG Raw-Attribute für LOBs werden empfohlen von Oracle. Oracle plant, die Unterstützung zu beenden von LANG und LANG ROH in der Zukunft Veröffentlichungen. Siehe Oracle8-Migration für Weitere Informationen zur Migration.

32
cletus

Wie ich es verstehe, ist ein VARCHAR (MAX) -Datentyp eine SQL Server 2005-spezifische Methode zum Angeben eines Textfelds, das entweder klein sein kann (bis zu 8000 Zeichen in SQL Server)oderbig (bis bis 2 GB in SQL Server). Die Datenbank handhabt die Änderung des Speichers hinter den Kulissen, wenn der Inhalt vom kleinen Bereich zum großen Bereich wächst.

In Oracle gibt es keine Entsprechung.

Sie haben entweder ein kleines Textstück in einem VARCHAR2 - das sind bis zu 32767 Bytes in pl/sql und bis zu 4000 Bytes in SQL (dh in einer Tabellendefinition) - oder Sie haben ein möglicherweise sehr großes Textbit in einem CLOB (was ein spezialisiertes BLOB ist).

10
Nick Pierpoint

In PL/SQL kann VARCHAR2 bis zu 32767 Byte groß sein. Für SQL beträgt das Limit 4000 Byte (bei Verwendung eines Multibyte-Zeichensatzes möglicherweise weniger als 4000 Zeichen).

3
Gary Myers

Das Oracle 11g-Gateway übersetzt einen Varchar (Max) in LONG Nicht sehr praktisch und verursacht große Probleme beim Laden von SQL Server-Daten in Oracle.

Weitere Informationen finden Sie unter folgender URL: - http://docs.Oracle.com/cd/B28359_01/gateways.111/b31049/apa.htm

0

Ein Ansatz, den ich in der Vergangenheit verwendet habe (MS SQL, vor Varchar (max)):

Fügen Sie zwei Spalten in die Tabelle ein, eine kleine Varchar (z. B. 255) und eine andere. Dann erstellen Sie Ihre Anwendung so, dass die Varchar-Spalte für kleine Daten verwendet wird, wobei der Text null bleibt. Wenn die Daten größer als der Varchar sind, lassen Sie diese Null und speichern Sie sie im Text. Auf diese Weise beanspruchen kleine Daten keine eigene Seite auf dem Server. Der Kompromiss hier ist, dass alle Anwendungen, die die Daten verwenden, diesem Schema zustimmen müssen und über Logik verfügen müssen. Aber es funktioniert gut.

Ich gehe davon aus, dass dies auch in Oracle der Fall ist, nur Varchar2 für Varchar und CLOB für Text. Ich gebe nicht vor zu wissen, wie die richtige Größe für den Varchar aussehen soll - das hängt von den Daten ab und hängt auch von den übrigen Spalten der Tabelle ab.

0
user175135

AFAIK gibt es keine Entsprechung. In Oracle erhalten Sie am nächsten das CLOB, das die gleichen Einschränkungen aufweist, die TEXT in den früheren "schlechten Tagen" in SQL Server hatte. 

0
Dave Markle