So verwenden CAST Datentypkonvertierungen mit SQL

Idealerweise hat jede Spalte in einer SQL-Datenbank-Tabelle eine perfekte Wahl der Datentyp. In diesem nicht-idealen Welt, aber genau das, was die perfekte Wahl sein kann, nicht immer klar. eine Datenbanktabelle Bei der Definition an, dass Sie einen Datentyp einer Spalte zuzuordnen, die perfekt für Ihre aktuelle Anwendung funktioniert.

Nehmen wir an, dass Sie später Ihre Anwendung Anwendungsbereich erweitern möchten - oder schreiben Sie eine völlig neue Anwendung, die die Daten unterschiedlich verwendet. Diese neue Anwendung könnte einen Datentyp unterscheidet sich von dem verlangen, dass Sie ursprünglich gewählt haben.

Sie können eine Spalte eines Typs in einer Tabelle mit einer Spalte eines anderen Typs in einer anderen Tabelle vergleichen möchten. Zum Beispiel könnten Sie Daten als Zeichendaten in einer Tabelle und als aktuelle Daten in einer anderen Tabelle gespeichert haben.

Auch wenn beide Spalten enthalten die gleiche Art von Informationen (Daten, zum Beispiel), die Tatsache, dass die Arten unterschiedlich sind, können Sie verhindern, dass der Vergleich macht. In den frühesten SQL-Standards, SQL-86 und SQL-89 stellte Art Unverträglichkeit ein großes Problem. SQL-92 führte jedoch eine einfach zu bedienende Lösung in der BESETZUNG Ausdruck.

Das BESETZUNG Ausdruck konvertiert Tabellendaten oder Host-Variablen von einem Typ in einen anderen Typ. Nachdem Sie die Konvertierung vornehmen, können Sie mit dem Betrieb oder der Analyse fortfahren, die Sie ursprünglich vorgesehen.

Natürlich stehen Ihnen einige Einschränkungen bei der Verwendung von BESETZUNG Ausdruck. Sie können nicht einfach wahllos Daten jeglicher Art in eine andere Art umwandeln. Die Daten, die Sie konvertieren müssen mit den neuen Datentyp kompatibel sein. Sie können zum Beispiel verwenden BESETZUNG konvertiert die CHAR (10) Zeichenkette '2007-04-26' zum DATUM Art.

Aber Sie können nicht verwenden BESETZUNG konvertiert die CHAR (10) Zeichenkette 'Nashorn' zum DATUM Art. Sie können eine nicht konvertieren GANZE ZAHL zum SMALLINT Geben Sie, wenn die erstere die maximale Größe eines überschreitet SMALLINT.

Sie können ein Element von jedem Zeichentyp zu einem anderen Typ (wie zB numerisch oder Datum) zur Verfügung gestellt konvertieren Wert des Einzelteils in Form einer wörtlichen des neuen Typs hat. Im Gegensatz dazu können Sie ein Element von jeder Art zu einem der Charaktertypen, sofern wandeln den Wert des Elements in Form einer wörtlichen des ursprünglichen Typs hat.

Die folgende Liste beschreibt einige zusätzliche Umwandlungen Sie machen können:

  • Ein beliebiger numerischer Typ zu jeden anderen numerischen Typ. Wenn auf eine weniger fraktioniert genaue Art der Konvertierung das System Runden oder kürzt das Ergebnis.

  • Alle genauen numerischen Typ zu einem einzigen Bauteil Intervall, wie INTERVAL DAY oder INTERVAL SECOND.

  • Irgendein DATUM zu a TIMESTAMP. Die Zeit, Teil der TIMESTAMP füllt mit Nullen in.

  • Irgendein ZEIT zu a ZEIT mit einem anderen Bruchteil-Sekunden Präzision oder TIMESTAMP. Das Datum Teil des TIMESTAMP füllt sich mit dem aktuellen Datum in.

  • Irgendein TIMESTAMP zu a DATUM, ein ZEIT, oder ein TIMESTAMP mit einem anderen Bruchteil-Sekunden Präzision.

  • Jedes Jahr-Monat INTERVALL auf einen exakten numerischen Typ oder einem anderen Jahr-Monat INTERVALL mit verschiedenen führenden Feld Präzision.

  • Jede Tageszeit INTERVALL auf einen exakten numerischen Typ oder einen anderen Tag-Zeit INTERVALL mit verschiedenen führenden Feld Präzision.

Wie zu verwenden CAST in SQL

Angenommen, Sie für ein Unternehmen arbeiten, dass Sie den Überblick über potenzielle Mitarbeiter sowie die Mitarbeiter hält habe tatsächlich eingestellt. Sie listen die potenzielle Mitarbeiter in einer Tabelle mit dem Namen AUSSICHT, und Sie unterscheiden sie durch ihre Sozialversicherungsnummern, die Sie gerade als zu speichern CHAR (9) Art.

Sie listen die Mitarbeiter in einer Tabelle mit dem Namen MITARBEITER, und Sie unterscheiden sie durch ihre Sozialversicherungsnummern, die sind von der GANZE ZAHL Art. Sie wollen nun eine Liste aller Menschen zu erzeugen, die in beiden Tabellen erscheinen. Sie können verwenden BESETZUNG um die Aufgabe auszuführen:

SELECT * FROM EMPLOYEEWHERE MITARBEITER.SVN = CAST (PROSPECT.SSN AS INTEGER) -

Wie zu verwenden CAST zwischen SQL und der Host-Sprache

Der Schlüssel Verwendung von BESETZUNG ist mit den Datentypen zu befassen, die in SQL, aber nicht in der Host-Sprache, die Sie verwenden, zur Verfügung stehen. Die folgende Liste bietet einige Beispiele für diese Datentypen:

  • SQL hat DEZIMAL und NUMERIC, aber Fortran und Pascal nicht.

  • SQL hat SCHWEBEN und ECHT, aber Standard COBOL nicht.

  • SQL hat TERMINZEIT, die keine andere Sprache hat.

Angenommen, Sie Fortran oder Pascal zu Zugriffstabellen verwenden wollen mit DECIMAL (5,3) Spalten, und Sie wollen keine Ungenauigkeiten durch Umwandlung dieser Werte zu den führen ECHT Datentyp von Fortran und Pascal verwendet. Sie können diese Aufgabe ausführen, indem Sie BESETZUNG die Daten zu und von Zeichenfolgen-Host-Variablen zu bewegen.

Sie rufen einen numerischen Gehalt von 198,37 als CHAR (10) Wert von '0.000.198,37'. Dann, wenn Sie diesen Gehalt zu 203,74 aktualisieren möchten, können Sie diesen Wert in einem Ort CHAR (10) wie '0.000.203,74'. Zuerst verwenden BESETZUNG die SQL zu ändern DECIMAL (5,3) Datentyp in den CHAR (10) Geben Sie für die Mitarbeiter, deren ID-Nummer, die Sie in der Host-Variablen sind die Speicherung : emp_id_var, wie folgt:

SELECT CAST (Gehalt als CHAR (10)) IN: salary_varFROM EMPWHERE EmpID =: emp_id_var -

Die Fortran oder Pascal Anwendung prüft die resultierende Zeichenfolge-Wert in : salary_var, möglicherweise setzt die Zeichenkette auf einen neuen Wert von '000.203,74', und aktualisiert dann die Datenbank, indem Sie den folgenden SQL-Code aufrufen:

UPDATE EMPSET Gehalt = CAST (: salary_var AS DECIMAL (5,3)) WHERE EmpID =: emp_id_var -

Der Umgang mit Zeichenkettenwerte wie '000.198,37' ist in Fortran oder Pascal umständlich, aber Sie können eine Reihe von Subroutinen, die notwendigen Manipulationen zu tun zu schreiben. Sie können dann alle SQL-Daten von jedem beliebigen Host Sprache abrufen und aktualisieren, und - und Set - genaue Werte.

Die allgemeine Idee ist, dass BESETZUNG ist sehr wertvoll für die in der Datenbank zwischen Host-Typen und der Datenbank und nicht für die Umwandlung zu konvertieren.

Menü