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

Die Frontend-Entwicklung muss jeden Tag lernen, HTML-Tags zu verstehen (1)

2.1 Semantisierung sorgt dafür, dass Ihre Webseit...

Implementierung von MySQL-indexbasierten Stresstests

1. Datenbankdaten simulieren 1-1 Datenbank- und T...

So starten Sie ein JAR-Paket und führen es unter Linux im Hintergrund aus

Der Linux-Befehl zum Ausführen des JAR-Pakets lau...

Detaillierte Erklärung zur Verwendung der Vue-Nummernschild-Eingabekomponente

Eine einfache Nummernschild-Eingabekomponente (vu...

So erreichen Sie die maximale Anzahl von Verbindungen in MySQL

Inhaltsverzeichnis Was ist der Grund für den plöt...

So konfigurieren Sie die CDN-Planung mit dem Modul Nginx_geo

Einführung in das Geo-Modul von Nginx Die Geo-Dir...

So verweisen Sie auf jQuery in einer Webseite

Die Referenzierung ist über CDN (Content Delivery ...

So richten Sie geplante Sicherungsaufgaben in Linux CentOS ein

Implementierungsvorbereitung # Der Dateipfad muss...

JS removeAttribute()-Methode zum Löschen eines Attributs eines Elements

Verwenden Sie in JavaScript die Methode removeAtt...