Eine kurze Analyse der expliziten Typkonvertierung von MySQL

Eine kurze Analyse der expliziten Typkonvertierung von MySQL

CAST-Funktion

Im vorherigen Artikel haben wir die CAST-Funktion erwähnt, die zur Anzeigetypkonvertierung verwendet wird. Die Vermeidung impliziter Typkonvertierungen bietet zahlreiche Vorteile. Tatsächlich sind hier noch viele Details zu klären.

Schauen wir uns zunächst die folgende Konvertierung an:

mysql> SELECT CAST('2017-12-14' AS DATE);
+----------------------------+
| BESETZUNG('2017-12-14' ALS DATUM) |
+----------------------------+
| 14.12.2017 |
+----------------------------+
1 Zeile im Satz (0,00 Sek.)

In:

Das Datum, das konvertiert werden soll, ist 14.12.2017.

DATE ist der konvertierte Typ.

Die Standardsyntax ist diese:

CAST(Ausdruck AS Typ)

Hierbei ist zu beachten, dass der Typtyp nicht alle Datentypen unterstützt, sondern bestimmte Datentypen, was auch der Schwerpunkt des heutigen Artikels ist. (Ich habe diesen Verlust schon einmal erlitten. Ich ging davon aus, dass alle Datentypen unterstützt werden, aber ich bekam eine Ohrfeige.)

Nicht unterstützter Fehler:

mysql> SELECT CAST('1024' AS int);
FEHLER 1064 (42000): Ihre SQL-Syntax weist einen Fehler auf. Überprüfen Sie im Handbuch zu Ihrer MySQL-Serverversion die richtige Syntax für die Verwendung in der Nähe von „int)“ in Zeile 1.

Unterstützte Typen

Nachfolgend finden Sie eine Liste der Datentypen, deren Konvertierung von der CAST-Funktion unterstützt wird:

Typ Bemerkung
DATUM JJJJ-MM-TT
DATETIME JJJJ-MM-TT HH:mm:ss
ZEIT HH:mm:ss
DEZIMAL Normalerweise mit Dezimalstellen verwendet
VERKOHLEN Zeichenfolge mit fester Länge
NCHAR Der Typ ist konsistent mit CHAR
UNTERZEICHNET Eine vorzeichenbehaftete 64-Bit-Ganzzahl
OHNE VORZEICHEN Eine vorzeichenlose 64-Bit-Ganzzahl
BINÄR Binäre Zeichenfolge
JSON MySQL 5.7.8 und höher

Beachten:

Der unterstützte DATE-Bereich ist: 1000-01-01 bis 9999-12-31 (experimentelle Version:)

Wenn es 999-01-01 lautet, ist das Ergebnis 0999-01-01.

Wenn es 01.01.01 ist, dann wird es 01.01.2001 sein.

mysql> Auswahl cast('999-11-11' als DATUM);
+-----------------------------+
| Besetzung('999-11-11' als DATUM) |
+-----------------------------+
| 11.11.0999 |
+-----------------------------+
1 Zeile im Satz (0,00 Sek.)
mysql> Auswahl cast('01-11-11' als DATUM);
+--------------------------+
| Besetzung('01-11-11' als DATUM) |
+--------------------------+
| 11.11.2001 |
+--------------------------+
1 Zeile im Satz (0,00 Sek.)
mysql> Version auswählen();
+-------------+
| version() |
+-------------+
| 5.7.20 |
+-------------+
1 Zeile im Satz (0,00 Sek.)

2. Der Wert von expr in der CAST-Funktion kann in Typ konvertiert werden, und das Ergebnis der Konvertierung ist korrekt. Andernfalls ist das Ergebnis nach der Konvertierung der Standardwert, z. B. Null, 0 usw.

Beispiel: Wenn ein Char-Typ in einen Demical-Typ konvertiert wird, ist das Ergebnis der Konvertierung 0.

mysql> SELECT CAST('ANDYQIAN' AS DECIMAL);
+-----------------------------+
| CAST('ANDYQIAN' AS DECIMAL) |
+-----------------------------+
| 0 |
+-----------------------------+
1 Zeile im Satz, 1 Warnung (0,00 Sek.)

Konvertierungsfall

Hier sind einige häufig verwendete Beispiele für Typkonvertierungen.

DATE-Typ

mysql> Auswahl Cast('2017-12-14' als DATUM);
+----------------------------+
| Besetzung('2017-12-14' als DATUM) |
+----------------------------+
| 14.12.2017 |
+----------------------------+
1 Zeile im Satz (0,00 Sek.)

TIME-Typ

mysql> Auswahl cast('12:00:00' als ZEIT);
+--------------------------+
| Besetzung('12:00:00' als ZEIT) |
+--------------------------+
| 12:00:00 |
+--------------------------+
1 Zeile im Satz (0,00 Sek.)

DATETIM-Typ

mysql> Auswahl Besetzung('2017-12-14 00:11:11' als DATETIME);
+-----------------------------------------+
| Besetzung('2017-12-14 00:11:11' als DATETIME) |
+-----------------------------------------+
| 14.12.2017 00:11:11 |
+-----------------------------------------+
1 Zeile im Satz (0,00 Sek.)

SIGNED-Typ

mysql> Auswahl cast('-1024' als SIGNED);
+-------------------------+
| cast('-1024' als SIGNIERT) |
+-------------------------+
|-1024 |
+-------------------------+
1 Zeile im Satz (0,00 Sek.)

UNSIGNED-Typen

mysql> Auswahl cast('-1024' als UNSIGNED);
+-----------------------------+
| Besetzung('-1024' als UNSIGNED) |
+-----------------------------+
| 18446744073709550592 |
+-----------------------------+
1 Zeile im Satz, 1 Warnung (0,00 Sek.)

DECIMAL-Typ

mysql> wählen Sie Cast('18.11' als DECIMAL(18,2));
+--------------------------------+
| Besetzung('18.11' als DECIMAL(18,2)) |
+--------------------------------+
| 18.11 |
+--------------------------------+
1 Zeile im Satz (0,00 Sek.)

Das Obige ist der gesamte Inhalt dieser Zusammenstellung. Sie können den Befehl eingeben, um ihn beim Testen auszuprobieren. Wenn Sie etwas nicht verstehen, können Sie es im Kommentarbereich unten besprechen.

Das könnte Sie auch interessieren:
  • Beheben von Problemen mit impliziter MySQL-Konvertierung
  • Zusammenfassung der impliziten Typkonvertierung von MySQL
  • MySQL implizite Typkonvertierungsfallen und Regeln
  • MySQL-Zeitdifferenzfunktionen (TIMESTAMPDIFF, DATEDIFF), Funktionen zur Berechnung von Datumsumrechnungen (date_add, day, date_format, str_to_date)
  • So konvertieren Sie MySQL-Datenbankdaten mit Python in JSON-Daten
  • Zusammenfassung der in MySQL häufig verwendeten Typkonvertierungsfunktionen (empfohlen)
  • MySQL-Datumsfunktionen und Datumskonvertierungs- und -formatierungsfunktionen
  • MySQL NULL-Datenkonvertierungsmethode (unbedingt lesen)
  • Sprechen Sie über implizite Konvertierung in MySQL

<<:  Detaillierte Schritte zum Herunterladen und Installieren von Tomcat unter Linux

>>:  Lösen Sie das Installationsproblem von Linux Tensorflow2.0

Artikel empfehlen

Installieren Sie Memcached und die PHP Memcached-Erweiterung unter CentOS

In Bezug auf das leistungsstarke verteilte Speich...

So installieren und konfigurieren Sie MySQL und ändern das Root-Passwort

1. Installation apt-get install mysql-server erfo...

Detaillierte Erklärung der Datentypen und Schemaoptimierung in MySQL

Ich lerne derzeit etwas über MySQL-Optimierung. D...

HTML-Multimediaanwendung: Einfügen von Flash-Animationen und Musik in Webseiten

1. Anwendung von Multimedia in HTML_Flash-Animati...

So verwenden Sie MQTT im Uniapp-Projekt

Inhaltsverzeichnis 1. Referenz-Plugins im Uniapp ...

So verwenden Sie MySQL, um die Datengenerierung in Excel abzuschließen

Excel ist das am häufigsten verwendete Tool zur D...

Was sind die Unterschiede zwischen SQL und MySQL

Was ist SQL? SQL ist eine Sprache zum Betrieb von...

JDBC-Idee: MySQL importieren, um Java-JAR-Paket zu verbinden (Mac)

Vorwort 1. Dieser Artikel verwendet MySQL 8.0 Ver...

Wo werden MySQL-Daten gespeichert?

Speicherort der MySQL-Datenbank: 1. Wenn MySQL di...

Detaillierte Einführung in den HTML-Head-Tag

Der HTML-Kopfteil enthält viele Tags und Elemente,...

HTML/CSS (der erste Leitfaden, den Anfänger unbedingt lesen sollten)

1. Die Bedeutung von Webstandards verstehen - War...