22nd Jan 2025 6 Leseminuten SQL-Funktion CAST(): Ein Überblick Jill Thornhill Datenanalyse Inhaltsverzeichnis Syntax der SQL-Funktion CAST() CAST() Funktionsbeispiele 1. die Verwendung von Zahlen als Zeichenketten 2 Verbinden von Tabellen über Spalten mit unterschiedlichen Datentypen 3. das Ändern von Feldtypen in einem ETL-Vorgang Wann wird CAST() verwendet? Von den gängigen SQL-Dialekten unterstützte Datentypen 1. SQL Server 2) MySQL 3. Oracle 4. postgreSQL Wie geht es weiter mit der SQL-Funktion CAST()? Die Funktion SQL CAST() wandelt einen Datentyp in einen anderen um. In diesem Artikel erfahren Sie, wozu die Funktion dient und wann und wie Sie sie verwenden können. In relationalen Datenbanken hat jede Spalte einen definierten Datentyp, der steuert, welche Art von Daten in der Spalte gespeichert wird und wie diese Daten verwendet werden können. So wird beispielsweise eine Produktbeschreibung wahrscheinlich als Text gespeichert und kann nicht für arithmetische Berechnungen (z. B. Summenbildung) verwendet werden. Der Saldo eines Kunden hingegen würde als numerische Daten gespeichert und könnte in Berechnungen verwendet werden. SQL verfügt über separate Funktionssätze für numerische Operationen und für die Manipulation von Zeichenketten. Gelegentlich möchten Sie diese Regeln außer Kraft setzen und eine Spalte anders behandeln als die üblichen Operationen ihres Datentyps. An dieser Stelle wird die Funktion SQL CAST() nützlich. Sie konvertiert ein Datenelement in einen anderen Datentyp innerhalb Ihrer Abfrage. Im weiteren Verlauf des Artikels werden wir uns einige Beispiele ansehen, bei denen dies erforderlich sein könnte. Wenn Sie ein tieferes Verständnis von SQL erlangen möchten, sollten Sie sich unsere Lernreihe SQL von A bis Z ansehen. Dieser Satz von 7 Kursen führt Sie von Anfängern bis hin zu fortgeschrittenen SQL-Themen. Durch die Bearbeitung von mehr als 700 angeleiteten Übungen sammeln Sie praktische Erfahrungen und lernen dabei die Konzepte relationaler Datenbanken kennen. Alles, was Sie brauchen, ist ein Browser und eine Internetverbindung, und Hilfe ist bei jedem Schritt verfügbar. Syntax der SQL-Funktion CAST() Die Funktion CAST() hat in allen SQL-Dialekten die gleiche einfache Syntax: CAST(value AS type) value kann ein beliebiger gültiger SQL-Wert sein. Es kann ein Spaltenname, das Ergebnis einer Berechnung, das Ergebnis einer Funktion oder ein Literalwert sein. type ist der gewünschte Datentyp, d.h. in was der Wert umgewandelt werden soll. Nehmen wir an, dass die Spalte date_hired in der Tabelle employee Tabelle als Datentyp DATE definiert wurde. Sie möchten sie mit dem heutigen Datum füllen, indem Sie die Funktion GETDATE() verwenden, die einen Wert vom Datentyp DATETIME liefert. Sie können den DATETIME-Wert mit dieser Syntax in einen DATE-Wert konvertieren: INSERT INTO employee (date_hired) VALUES (CAST(GETDATE() AS DATE)); CAST() Funktionsbeispiele Sehen wir uns nun einige Beispiele an, wie CAST() in Ihrer täglichen Arbeit verwendet werden kann. 1. die Verwendung von Zahlen als Zeichenketten Eine Tabelle namens employee hat das Feld Abteilung, das mit dem Datentyp INT (Ganzzahl) definiert ist. Die ersten drei Ziffern dieses Codes geben die Abteilung der Organisation an. Die Geschäftsleitung möchte wissen, wie viele Personen in jeder Abteilung beschäftigt sind. Um dies zu erreichen, müssen wir die ersten drei Ziffern der Abteilung extrahieren. Wir müssen diesen INT-Wert in einen VARCHAR-Wert umwandeln und dann die String-Funktion LEFT() verwenden, um die ersten drei Zeichen abzurufen. Die Abfrage sieht wie folgt aus: SELECT LEFT(CAST (department AS VARCHAR(15)), 3) AS section, COUNT(*) AS employee_count FROM employee GROUP BY LEFT(CAST (department AS VARCHAR(15)), 3) ORDER BY LEFT(CAST (department AS VARCHAR(15)), 3); Beachten Sie, dass CAST() in die Funktion LEFT() eingebettet ist und die Funktionen in den Klauseln GROUP BY und ORDER BY wiederholt werden müssen. 2 Verbinden von Tabellen über Spalten mit unterschiedlichen Datentypen Die Tabelle employee im vorigen Beispiel muss mit einer anderen Tabelle department_details verknüpft werden, in der das Feld code als VARCHAR definiert ist. Normalerweise wird die Spalte department in employee mit der Spalte code Spalte in department_details zu einem Fehler führen, da die Felder unterschiedliche Datentypen haben. Wir wissen, dass der Abteilungscode immer numerisch sein wird, also können wir das Problem umgehen, indem wir den Code als Ganzzahl ausgeben. Die Abfrage würde wie folgt aussehen: SELECT department_name, name, date_hired FROM employee JOIN department_details ON department = CAST(code AS int); 3. das Ändern von Feldtypen in einem ETL-Vorgang In einem Fertigungsprozess gibt es an verschiedenen Stellen Sensoren, die einen Alarmstatus erzeugen, sobald ein ungewöhnlicher Zustand auftritt. Diese Alarme werden automatisch in eine Tabelle namens alarms. Ein täglicher Prozess kopiert die Zeilen aus alarms in eine Lagertabelle mit dem Namen alarm_historykopiert, die für die Analyse verwendet werden kann. Die Tabelle alarms Tabelle wird dann geleert. Die Tabelle alarms Tabelle sieht so aus: clock_time varchar(20), sensor_no int, status_code char(2) Die Tabelle alarm_history ist ähnlich, aber die Uhrzeit muss als DATETIME gespeichert werden, da die Manager sie für die Extraktion und Analyse nach einem Datumsbereich benötigen. Sie ist wie folgt definiert: clock_time datetime, sensor_no int, status_code char(2) Die Abfrage, die die Daten nach alarm_history kopiert, muss den VARCHAR-Datentyp clock_time in einen DATETIME-Datentyp konvertieren. Das sieht dann so aus: INSERT INTO alarm_history SELECT CAST(clock_time AS DATETIME), sensor_no, status_code FROM alarms; Wann wird CAST() verwendet? Schauen wir uns einige Szenarien an, in denen die Funktion SQL CAST() nützlich sein kann. ETL-Operationen (Extrahieren, Transformieren, Laden): BeiETL werden Daten aus einer oder mehreren Quellen entnommen und in die Form umgewandelt, die für eine andere Verwendung benötigt wird. So können Sie beispielsweise Daten, die in einem System gespeichert sind, das für das Tagesgeschäft eines Unternehmens verwendet wird, in ein Data Warehouse laden, das für Marketinganalysen geeignet ist. Die Datentypen im Data Warehouse können sich von denen im ursprünglichen System unterscheiden, daher ist CAST() hier wichtig. Verwendung von Funktionen, die zu einem anderen Datentyp gehören: Es kann vorkommen, dass Sie String-Funktionen auf numerische Daten anwenden wollen - z. B. um die Daten in einem Bericht zu formatieren. Ebenso kann es vorkommen, dass Sie numerische Funktionen und Aggregate auf String-Daten anwenden wollen (vorausgesetzt, Sie wissen, dass die Spalte Zahlen enthält). Das Verbinden von Tabellen über Spalten mit unterschiedlichen Datentypen: Dies geschieht normalerweise nicht, wenn die Datenbank gut entworfen wurde, kann aber in der Praxis vorkommen. Arbeiten mit Datumsangaben, die als Strings gespeichert sind. Datenbankdesigner speichern Datumsangaben manchmal als Textstrings; solche Datumsangaben können nicht für Datumsfunktionen und -berechnungen verwendet werden. Sie können dies umgehen, indem Sie CAST() verwenden. Verwendung von dynamischem SQL: Wenn Sie Programme oder gespeicherte Prozeduren schreiben, müssen Sie möglicherweise Daten in eine Zeichenfolge einfügen, um eine dynamische Abfrage zu erstellen. Wenn Ihre Abfrage aufgrund einer Datentypübereinstimmung einen Fehler zurückgibt, ist die Funktion CAST() wahrscheinlich die Lösung für Ihr Problem. Von den gängigen SQL-Dialekten unterstützte Datentypen 1. SQL Server SQL Server erlaubt es, jeden seiner gültigen Datentypen als Typparameter in der Funktion CAST() zu verwenden. Einige Konvertierungen sind nicht zulässig, wenn die Datentypen nicht kompatibel sind. Welche Konvertierungen erlaubt sind, können Sie in der T-SQL-Dokumentation nachlesen. Eine vollständige Beschreibung der Funktion CAST() in SQL Server finden Sie in der Dokumentation von Microsoft zu den Funktionen CAST() und CONVERT(). 2) MySQL MySQL ist insofern nicht standardisiert, als es nicht den Datentyp für den Typ-Parameter verwendet. Stattdessen gibt es einen festen Satz von zulässigen Werten: BINARY CHAR (Hinweis: Dieser Typ wird für jede Art von String-Wert verwendet, z. B. VARCHAR oder TEXT. Die Datenbank-Engine entscheidet über den Datentyp, der in Abhängigkeit von der Länge des Textes erzeugt wird). DATE DATETIME DECIMAL DOUBLE FLOAT JSON NCHAR REAL SIGNED SPACIAL_TYPE UNSIGNED YEAR Weitere Informationen zu CAST() finden Sie im MYSQL-Referenzhandbuch. 3. Oracle Oracle verwendet den Datentyp für den Parameter type. Die Dokumentation enthält eine Tabelle der Datentypen, die für die Konvertierung gültig sind. 4. postgreSQL PostgreSQL verwendet den Datentyp für den type-Parameter. In der PostgreSQL-Dokumentation ist nicht explizit angegeben, welche Konvertierungen zulässig sind, aber Standardkonvertierungen zwischen Strings, numerischen Werten und Datumswerten sind in Ordnung. PostgreSQL erlaubt es Ihnen, Ihre eigenen Casting-Regeln für Nicht-Standard-Konvertierungen mit der Funktion CREATE_CAST zu erstellen. Wie geht es weiter mit der SQL-Funktion CAST()? Wir haben eine gründliche Einführung in die SQL CAST()-Funktion und ihre Verwendung erhalten. Wenn Sie auf der Suche nach einem umfassenden Lernprogramm sind, das nicht nur die Grundlagen, sondern auch fortgeschrittene Themen abdeckt - einschließlich CAST() - möchte ich Ihnen noch einmal unseren SQL From A to Z Track empfehlen. Er ist voll von hilfreichen Tipps, praktischen Übungen und Expertenwissen. Viel Erfolg und viel Spaß beim Lernen! Tags: Datenanalyse