Datentypen der meisten DBMS

Datentypen, die in MSSQL, Oracle, IBM DB2 und Teradata existieren:

  1. INTEGER / INT
  2. CHAR(n)
  3. VARCHAR(n)
  4. FLOAT / DOUBLE PRECISION
  5. DECIMAL(p,s) / NUMERIC(p,s)
  6. DATE
  7. TIMESTAMP / DATETIME
  8. BIGINT

Lassen Sie uns jetzt die spezifischen Wertebereiche und Unterschiede für jedes dieser Datenbanksysteme durchgehen:

1. INTEGER / INT

  • MSSQL: -2^31 bis 2^31-1
  • Oracle: -2^31 bis 2^31-1
  • IBM DB2: -2^31 bis 2^31-1
  • Teradata: -2^31 bis 2^31-1

2. CHAR(n)

  • MSSQL: 1 bis 8,000 Zeichen
  • Oracle: 1 bis 2,000 Zeichen
  • IBM DB2: 1 bis 254 Zeichen
  • Teradata: 1 bis 64,000 Zeichen

3. VARCHAR(n)

  • MSSQL: 1 bis 8,000 Zeichen
  • Oracle: 1 bis 4,000 Zeichen
  • IBM DB2: 1 bis 32,704 Zeichen
  • Teradata: 1 bis 64,000 Zeichen

4. FLOAT / DOUBLE PRECISION

  • MSSQL: – 1.79E + 308 bis 1.79E + 308
  • Oracle: – 1.0E-130 bis 9.9E125 (für FLOAT)
  • IBM DB2: – 1.79E + 308 bis 1.79E + 308
  • Teradata: – 1.79E + 308 bis 1.79E + 308

5. DECIMAL(p,s) / NUMERIC(p,s)

  • MSSQL: 1 bis 38 Ziffern
  • Oracle: 1 bis 38 Ziffern
  • IBM DB2: 1 bis 31 Ziffern
  • Teradata: 1 bis 38 Ziffern

6. DATE

  • MSSQL: 01.01.1753 bis 31.12.9999
  • Oracle: 01.01.4712 v. Chr. bis 31.12.9999 n. Chr.
  • IBM DB2: 01.01.0001 bis 31.12.9999
  • Teradata: 01.01.0001 bis 31.12.9999

7. TIMESTAMP / DATETIME

  • MSSQL: 01.01.1753 00:00:00 bis 31.12.9999 23:59:59.997
  • Oracle: 01.01.4712 v. Chr. 00:00:00 bis 31.12.9999 n. Chr. 23:59:59
  • IBM DB2: 01.01.0001 00:00:00 bis 31.12.9999 23:59:59.999999
  • Teradata: 01.01.0001 00:00:00 bis 31.12.9999 23:59:59.999999

8. BIGINT

  • MSSQL: -2^63 bis 2^63-1
  • Oracle: -9,223,372,036,854,775,808 bis 9,223,372,036,854,775,807
  • IBM DB2: -2^63 bis 2^63-1
  • Teradata: -2^63 bis 2^63-1

Beachten Sie, dass einige Systeme spezifische Datentypen oder Variationen haben, die in anderen Systemen nicht existieren. Es ist wichtig, sich auf die genauen Anforderungen und Details jedes DBMS zu beziehen, wenn Sie eine Datenbank entwerfen oder zwischen Systemen migrieren.

Spezifischen Datentypen für den Microsoft SQL Server (MSSQL)

  1. SMALLINT
    • Beschreibung: Ganze Zahl kleinerer Größe.
    • Wertebereich: -32,768 bis 32,767
    • Beispiel: 1234
  2. TINYINT
    • Beschreibung: Noch kleinere Ganzzahl.
    • Wertebereich: 0 bis 255
    • Beispiel: 100
  3. BIT
    • Beschreibung: Binärwert.
    • Wertebereich: 0 oder 1
    • Beispiel: 0
  4. MONEY / SMALLMONEY
    • Beschreibung: Für monetäre Werte.
    • Wertebereich:
      • MONEY: -922,337,203,685,477.5808 bis 922,337,203,685,477.5807
      • SMALLMONEY: -214,748.3648 bis 214,748.3647
    • Beispiel: 12345.67
  5. REAL
    • Beschreibung: Gleitkommazahl (einfache Präzision).
    • Wertebereich: -3.40E + 38 bis 3.40E + 38
    • Beispiel: 123.4567
  6. DATETIME2
    • Beschreibung: Datum und Uhrzeit mit erweiterter Genauigkeit.
    • Wertebereich: 01.01.0001 00:00:00.0000000 bis 31.12.9999 23:59:59.9999999
    • Beispiel: ‚2023-10-19 15:45:30.1234567‘
  7. SMALLDATETIME
    • Beschreibung: Datum und Uhrzeit mit geringerer Genauigkeit.
    • Wertebereich: 01.01.1900 00:00 bis 06.06.2079 23:59
    • Beispiel: ‚2023-10-19 15:45‘
  8. TIME
    • Beschreibung: Nur Zeitwert.
    • Wertebereich: 00:00:00.0000000 bis 23:59:59.9999999
    • Beispiel: ’15:45:30.1234567′
  9. TEXT
    • Beschreibung: Große Zeichenkettendaten.
    • Wertebereich: Bis zu 2^31-1 Zeichen
    • Beispiel: ‚Ein sehr langer Text…‘
  10. DATETIMEOFFSET

    • Beschreibung: Datum und Uhrzeit mit Zeitzonenoffset.
    • Wertebereich: 01.01.0001 00:00:00.0000000 -14:00 bis 31.12.9999 23:59:59.9999999 +14:00
    • Beispiel: ‚2023-10-19 15:45:30.1234567 -07:00‘

    Der DATETIMEOFFSET-Datentyp beinhaltet sowohl Datum und Uhrzeit als auch den Offset von der UTC-Zeit. Dies macht es besonders nützlich für Anwendungen, die in verschiedenen Zeitzonen arbeiten, da es das Datum und die Uhrzeit in Bezug auf UTC speichert.

  11. VARBINARY(n) und VARBINARY(MAX)

    • Beschreibung: Variable Länge binäre Daten.
    • Wertebereich:
      • VARBINARY(n): Bis zu n Bytes (wobei n zwischen 1 und 8000 liegt)
      • VARBINARY(MAX): Bis zu 2^31-1 Bytes
    • Beispiel: 0xA9B8C7D6

    Der VARBINARY-Datentyp wird verwendet, um binäre Daten variabler Länge zu speichern. Es ist vergleichbar mit dem VARCHAR-Datentyp, speichert jedoch binäre Daten anstelle von Zeichendaten. Mit VARBINARY(MAX) können Sie binäre Daten mit einer maximalen Länge von 2^31-1 Bytes speichern.

  12. NCHAR(n) / NVARCHAR(n)

  • Beschreibung: Unicode-Zeichenkette mit fester (NCHAR) oder variabler (NVARCHAR) Länge.
  • Wertebereich:
    • NCHAR: Genau n Zeichen
    • NVARCHAR: Bis zu n Zeichen, mit NVARCHAR(MAX) bis zu 2^30-1 Zeichen
  • Beispiel: ‚OpenAI‘
  1. BINARY(n) / VARBINARY(n)
  • Beschreibung: Binäre Daten.
  • Wertebereich:
    • BINARY: Genau n Bytes
    • VARBINARY: Bis zu n Bytes, mit VARBINARY(MAX) bis zu 2^30-1 Bytes
  • Beispiel: 0x9A7B
  1. IMAGE
  • Beschreibung: Große Binärdaten.
  • Wertebereich: Bis zu 2^30-1 Bytes
  • Beispiel: Ein Bild oder eine Datei in binärer Form
  1. UNIQUEIDENTIFIER
  • Beschreibung: Globally Unique Identifier (GUID).
  • Wertebereich: 16 Byte binär
  • Beispiel: ‚6F9619FF-8B86-D011-B42D-00C04FC964FF‘
  1. XML
  • Beschreibung: Für XML-Dokumente oder Fragmente.
  • Wertebereich: Abhängig von der Länge des XML-Inhalts
  • Beispiel: ‚<root><element>Wert</element></root>‘

Beachten Sie, dass dies eine Liste der gängigsten und spezifischen Datentypen von MSSQL ist. Einige dieser Typen, wie TEXT und IMAGE, sind als veraltet markiert und werden durch andere Typen wie VARCHAR(MAX) bzw. VARBINARY(MAX) ersetzt. Es ist ratsam, die offizielle Dokumentation von Microsoft zu konsultieren, wenn Sie sich mit spezifischen Projekten und Implementierungen befassen.

Spezifischen Datentypen von Oracle

  1. NUMBER(p, s)
    • Beschreibung: Numerischer Datentyp mit variabler Präzision.
    • Wertebereich: -10^38 +1 bis 10^38 -1
    • Beispiel: 123.456
  2. RAW(n) / LONG RAW
    • Beschreibung: Für binäre Daten.
    • Wertebereich:
      • RAW(n): Bis zu 2000 Byte
      • LONG RAW: Bis zu 2 GB
    • Beispiel: Ein binärer Wert oder eine Datei in binärer Form
  3. LONG
    • Beschreibung: Zeichen-Datentyp für größere Texte.
    • Wertebereich: Bis zu 2 GB Text
    • Beispiel: ‚Ein sehr langer Text…‘
  4. BLOB, CLOB, NCLOB, BFILE
    • Beschreibung: Für große Objekte. BLOB (Binary Large Object), CLOB (Character Large Object), NCLOB (N-Character Large Object), BFILE (Binary File).
    • Wertebereich:
      • BLOB, CLOB, NCLOB: Bis zu 128 TB
      • BFILE: Bis zu 4 GB
    • Beispiel: Ein Bild für BLOB, ein langer Text für CLOB, ein Unicode-Text für NCLOB, eine Datei-Referenz für BFILE
  5. ROWID, UROWID
    • Beschreibung: Einzigartige Identifikatoren für Zeilen in einer Tabelle.
    • Beispiel: ‚AAAaoqAABAAAaSvAAA‘
  6. INTERVAL YEAR TO MONTH
    • Beschreibung: Zeitspanne in Jahren bis Monaten.
    • Beispiel: INTERVAL ‚5-3‘ YEAR TO MONTH (bedeutet 5 Jahre und 3 Monate)
  7. INTERVAL DAY TO SECOND
    • Beschreibung: Zeitspanne in Tagen bis Sekunden.
    • Beispiel: INTERVAL ‚4 5:12:10.222‘ DAY TO SECOND (bedeutet 4 Tage, 5 Stunden, 12 Minuten, 10 Sekunden und 222 Millisekunden)
  8. PLS_INTEGER / BINARY_INTEGER
    • Beschreibung: Ganzzahlen für PL/SQL.
    • Wertebereich:
      • PLS_INTEGER: -2^31 bis 2^31-1
      • BINARY_INTEGER: -2^31 bis 2^31-1
    • Beispiel: 123456
  9. BOOLEAN
    • Beschreibung: Wahr/Falsch-Wert in PL/SQL.
    • Werte: TRUE, FALSE, NULL
  10. VARCHAR2(n)
  • Beschreibung: Variable Zeichenkette.
  • Wertebereich: Bis zu 4000 Zeichen (in der Datenbank) oder bis zu 32,767 Zeichen (in PL/SQL)
  • Beispiel: ‚OpenAI‘
  1. NCHAR(n), NVARCHAR2(n)
  • Beschreibung: Unicode-Zeichenketten.
  • Wertebereich:
    • NCHAR: Bis zu 2000 Zeichen
    • NVARCHAR2: Bis zu 4000 Zeichen
  • Beispiel: ‚OpenAI‘
  1. FLOAT
  • Beschreibung: Gleitkommazahl.
  • Wertebereich: 1.0E-130 bis 9.9E125
  • Beispiel: 123.456

Dies sind einige der spezifischen Datentypen von Oracle. Es ist zu beachten, dass Oracle eine Vielzahl von speziellen und erweiterten Datentypen bietet, insbesondere für seine PL/SQL-Programmiersprache. Für spezielle Anwendungsfälle und detaillierte Informationen ist es ratsam, die offizielle Oracle-Dokumentation zu konsultieren.

Spezifischen Datentypen von IBM DB2

  1. SMALLINT
    • Beschreibung: Ganze Zahl kleinerer Größe.
    • Wertebereich: -32,768 bis 32,767
    • Beispiel: 1234
  2. GRAPHIC(n)
    • Beschreibung: Für doppelt-Byte Zeichenkette.
    • Wertebereich: Bis zu n Zeichen (wobei n zwischen 1 und 32.672 liegt)
    • Beispiel: ‚文字‘
  3. VARGRAPHIC(n)
    • Beschreibung: Variable Länge doppelt-Byte Zeichenkette.
    • Wertebereich: Bis zu n Zeichen (wobei n zwischen 1 und 32.672 liegt)
    • Beispiel: ‚文字文字‘
  4. DECFLOAT
    • Beschreibung: Dezimaler Gleitkommawert.
    • Wertebereich: DECFLOAT(16) oder DECFLOAT(34) basierend auf der Präzision.
    • Beispiel: 123.456
  5. TIME WITH TIME ZONE
    • Beschreibung: Nur Zeitwert mit Zeitzoneninformation.
    • Beispiel: ’15:45:30.1234567 Europe/Paris‘
  6. TIMESTAMP WITH TIME ZONE
    • Beschreibung: Datum und Uhrzeit mit Zeitzoneninformation.
    • Beispiel: ‚2023-10-19 15:45:30.1234567 Europe/Paris‘
  7. DATALINK
    • Beschreibung: Ein Datentyp, der einen Link zu einer Datei in einem Dateisystem speichert.
    • Beispiel: Ein Link zu einer Datei.
  8. XML
    • Beschreibung: Für XML-Dokumente oder Fragmente.
    • Beispiel: ‚<root><element>Wert</element></root>‘
  9. BINARY(n)
    • Beschreibung: Binäre Daten fester Länge.
    • Wertebereich: Bis zu n Bytes (wobei n zwischen 1 und 255 liegt)
    • Beispiel: 0x9A7B
  10. VARBINARY(n)
  • Beschreibung: Variable Länge binäre Daten.
  • Wertebereich: Bis zu n Bytes (wobei n zwischen 1 und 32.700 liegt)
  • Beispiel: 0xA9B8C7D6
  1. BIGINT
  • Beschreibung: Große Ganzzahl.
  • Wertebereich: -9,223,372,036,854,775,808 bis 9,223,372,036,854,775,807
  • Beispiel: 912345678901234567

Spezifischen Datentypen von Teradata

  1. BYTEINT
    • Beschreibung: Kleine Ganzzahl.
    • Wertebereich: -128 bis 127
    • Beispiel: 123
  2. BYTE
    • Beschreibung: Binärer Datenwert fester Länge.
    • Wertebereich: 1 bis 64.000 Bytes
    • Beispiel: 0x9A
  3. VARBYTE(n)
    • Beschreibung: Binärer Datenwert variabler Länge.
    • Wertebereich: 1 bis n Bytes (wobei n zwischen 1 und 64.000 liegt)
    • Beispiel: 0xA9B8
  4. PERIOD(DATE)
    • Beschreibung: Zeitspanne aus zwei DATUM-Werten.
    • Beispiel: DATE ‚2022-01-01‘, DATE ‚2022-12-31‘
  5. PERIOD(TIME) / PERIOD(TIME(n)) / PERIOD(TIME WITH TIME ZONE) / PERIOD(TIME(n) WITH TIME ZONE)
    • Beschreibung: Zeitspanne aus zwei TIME-Werten.
    • Beispiel: TIME ’12:00:00′, TIME ’14:00:00′
  6. PERIOD(TIMESTAMP) / PERIOD(TIMESTAMP(n)) / PERIOD(TIMESTAMP WITH TIME ZONE) / PERIOD(TIMESTAMP(n) WITH TIME ZONE)
    • Beschreibung: Zeitspanne aus zwei TIMESTAMP-Werten.
    • Beispiel: TIMESTAMP ‚2022-01-01 12:00:00‘, TIMESTAMP ‚2022-12-31 14:00:00‘
  7. INTERVAL YEAR
    • Beschreibung: Zeitspanne in Jahren.
    • Beispiel: INTERVAL ‚5‘ YEAR
  8. INTERVAL YEAR TO MONTH
    • Beschreibung: Zeitspanne in Jahren bis Monaten.
    • Beispiel: INTERVAL ‚5-3‘ YEAR TO MONTH
  9. INTERVAL MONTH
    • Beschreibung: Zeitspanne in Monaten.
    • Beispiel: INTERVAL ’15‘ MONTH
  10. INTERVAL DAY
  • Beschreibung: Zeitspanne in Tagen.
  • Beispiel: INTERVAL ’50‘ DAY
  1. INTERVAL DAY TO HOUR
  • Beschreibung: Zeitspanne in Tagen bis Stunden.
  • Beispiel: INTERVAL ’50 12′ DAY TO HOUR
  1. INTERVAL DAY TO MINUTE
  • Beschreibung: Zeitspanne in Tagen bis Minuten.
  • Beispiel: INTERVAL ’50 12:30′ DAY TO MINUTE
  1. INTERVAL DAY TO SECOND
  • Beschreibung: Zeitspanne in Tagen bis Sekunden.
  • Beispiel: INTERVAL ’50 12:30:15′ DAY TO SECOND
  1. INTERVAL HOUR
  • Beschreibung: Zeitspanne in Stunden.
  • Beispiel: INTERVAL ’12‘ HOUR
  1. INTERVAL HOUR TO MINUTE
  • Beschreibung: Zeitspanne in Stunden bis Minuten.
  • Beispiel: INTERVAL ’12:30′ HOUR TO MINUTE
  1. INTERVAL HOUR TO SECOND
  • Beschreibung: Zeitspanne in Stunden bis Sekunden.
  • Beispiel: INTERVAL ’12:30:15′ HOUR TO SECOND
  1. INTERVAL MINUTE
  • Beschreibung: Zeitspanne in Minuten.
  • Beispiel: INTERVAL ’30‘ MINUTE
  1. INTERVAL MINUTE TO SECOND
  • Beschreibung: Zeitspanne in Minuten bis Sekunden.
  • Beispiel: INTERVAL ’30:15′ MINUTE TO SECOND
  1. INTERVAL SECOND
  • Beschreibung: Zeitspanne in Sekunden.
  • Beispiel: INTERVAL ‚15.123456‘ SECOND

Das sind die spezifischen Datentypen von Teradata. Bitte beachten Sie, dass Teradata viele fortgeschrittene Funktionen und Datentypen bietet, insbesondere im Zusammenhang mit Zeiträumen und Intervallen. Es wird empfohlen, die offizielle Teradata-Dokumentation oder Schulungsressourcen zu konsultieren, wenn spezifische oder detaillierte Informationen benötigt werden.

Datentypkonvertierung mit CAST und CONVERT

CAST und CONVERT sind beide SQL-Funktionen zum Ändern des Datentyps einer Spalte oder eines Wertes. Hier ist ein Überblick über die Unterschiede und die Unterstützung in verschiedenen Datenbanken:

Allgemeiner Unterschied:

  1. CAST:
    • CAST ist gemäß SQL-Standard definiert, und deshalb wird es von den meisten relationalen Datenbanken unterstützt.
    • Syntax: CAST(ausdruck AS datentyp)
  2. CONVERT:
    • CONVERT ist eine erweiterte Funktion, die nicht in allen Datenbanken vorhanden ist, aber mehr Flexibilität in einigen DBMS bietet.
    • Syntax: CONVERT(datentyp, ausdruck, [optionaler stil]) – der optionale Stil hängt von der spezifischen Implementierung ab und ist in vielen Datenbanken nicht verfügbar.

Unterschiede in den vier Datenbanken:

  1. MSSQL (Microsoft SQL Server):
    • Unterstützt sowohl CAST als auch CONVERT.
    • CONVERT hat in MSSQL zusätzliche Flexibilität, besonders wenn es um das Formatieren von Datums- und Zeitwerten geht. Zum Beispiel kann man damit ein Datum in verschiedenen Formaten konvertieren.
  2. Oracle:
    • Oracle verwendet hauptsächlich CAST für die Datentypkonvertierung.
    • Statt CONVERT hat Oracle spezifische Funktionen wie TO_CHAR, TO_DATE, TO_NUMBER usw., um Werte in bestimmte Datentypen zu konvertieren und zu formatieren.
  3. IBM DB2:
    • Unterstützt CAST.
    • CONVERT wird nicht in der gleichen Weise wie in MSSQL unterstützt. Ähnlich wie Oracle hat DB2 spezifische Funktionen für bestimmte Konvertierungen.
  4. Teradata:
    • Unterstützt CAST.
    • CONVERT wird in Teradata nicht in der gleichen Weise wie in MSSQL unterstützt. Bei Bedarf sind spezielle Funktionen oder Methoden zu verwenden.

Während CAST in den meisten Datenbanksystemen ähnlich ist, da es auf dem SQL-Standard basiert, unterscheiden sich die Funktionen und die Flexibilität von CONVERT (falls vorhanden) je nach DBMS. Wenn Sie plattformübergreifenden SQL-Code schreiben, ist es oft sicherer, bei CAST zu bleiben, es sei denn, Sie benötigen spezifische Funktionen, die nur CONVERT oder andere spezifische Datenbankfunktionen bieten. Es ist immer ratsam, die Dokumentation des jeweiligen Datenbanksystems zu konsultieren, um die genaue Implementierung und Unterstützung zu kennen.

Anwendungsbeispiele für CAST und CONVERT:

  1. Datumsformat ändern: In MSSQL kann man das CONVERT verwenden, um ein Datum in ein anderes Format zu konvertieren.
SELECT CONVERT(VARCHAR, GETDATE(), 103) -- Das Ergebnis ist in DD/MM/YYYY Format

In Oracle verwendet man stattdessen TO_CHAR:

SELECT TO_CHAR(SYSDATE, 'DD/MM/YYYY') FROM DUAL;

Ganzzahlen in Gleitkommazahlen konvertieren:

SELECT CAST(25 AS FLOAT) -- MSSQL, Oracle, IBM DB2, Teradata

Text in Datum konvertieren: In MSSQL:

SELECT CONVERT(DATE, '20231024', 112) -- Konvertiert den Text '20231024' in ein Datum

In Oracle:

SELECT TO_DATE('24-10-2023', 'DD-MM-YYYY') FROM DUAL;

Decimal in String konvertieren:

SELECT CAST(123.45 AS VARCHAR(10)) -- MSSQL, IBM DB2, Teradata

In Oracle:

SELECT TO_CHAR(123.45) FROM DUAL;

Best Practices bei der Verwendung von CAST und CONVERT:

  1. Verstehen Sie den Kontext: Bevor Sie CAST oder CONVERT verwenden, sollten Sie genau wissen, welche Art von Daten Sie umwandeln und in welchen Datentyp Sie sie umwandeln möchten.
  2. Vorsicht bei Datenverlust: Bei der Konvertierung von einem Datentyp in einen anderen kann es zu Datenverlust kommen, z.B. wenn man von FLOAT zu INT konvertiert.
  3. Performance beachten: Häufige oder unnötige Konvertierungen können die Abfrageleistung beeinträchtigen. Es ist immer gut, Daten so nah wie möglich am gewünschten Endtyp zu speichern, um Konvertierungen zu minimieren.
  4. Fehlerbehandlung: Es ist möglich, dass Konvertierungen fehlschlagen, z.B. wenn man versucht, einen Text, der nicht in ein Datum umgewandelt werden kann, mit CONVERT oder TO_DATE zu konvertieren. Es ist ratsam, solche potenziellen Fehler im Code zu behandeln.
  5. Plattformübergreifender Code: Wenn Sie vorhaben, Ihren SQL-Code auf verschiedenen Datenbankplattformen auszuführen, halten Sie sich an den SQL-Standard (z.B. CAST) und vermeiden Sie plattformspezifische Funktionen, es sei denn, dies ist unbedingt erforderlich.

Wie hat dir der Artikel gefallen?

Vielen Dank für dein Feedback!
About Frank 83 Articles

Ich bin Frank, Data Warehouse und BI-Entwickler mit langjähriger Expertise in diesem Bereich. Ich verfüge über mehr als 20 Jahre Berufserfahrung im DWH Umfeld. Das Analysieren und Interpretieren von Zahlen, Daten und Fakten ist meine große Leidenschaft, aus diesem Grunde ist auch diese Seite hier entstanden.

Be the first to comment

Leave a Reply

Your email address will not be published.


*