Heim > Datenbank > MySQL-Tutorial > Hauptteil

Beispielfreigabe für die explizite MySQL-Typkonvertierung

小云云
Freigeben: 2018-01-05 16:36:27
Original
1506 Leute haben es durchsucht

Im vorherigen Artikel haben wir die CAST-Funktion erwähnt, die für die explizite Typkonvertierung verwendet wird. Die Vermeidung impliziter Typkonvertierungen bietet viele Vorteile. Tatsächlich gibt es hier viele Details, die geklärt werden müssen. In diesem Artikel werden hauptsächlich die Grundkenntnisse der expliziten MySQL-Typkonvertierung vorgestellt und die Analyseergebnisse anhand von Beispielen dargestellt.

Schauen wir uns zunächst die folgende Konvertierung an:

mysql> SELECT CAST('2017-12-14' AS DATE);
+----------------------------+
| CAST('2017-12-14' AS DATE) |
+----------------------------+
| 2017-12-14         |
+----------------------------+
1 row in set (0.00 sec)
Nach dem Login kopieren

Darunter:

2017-12-14 sind die zu konvertierenden Daten.

DATE ist der konvertierte Typ.

Die Standardsyntax lautet:

CAST(expr AS type)
Nach dem Login kopieren

Hierbei ist zu beachten, dass der Typtyp nicht alle Datentypen unterstützt, sondern bestimmte Datentypen unterstützt, was auch im Mittelpunkt des heutigen Artikels steht. (Ich habe diesen Verlust erlitten. Ich ging davon aus, dass alle Datentypen unterstützt werden, aber ich wurde ins Gesicht geschlagen.)

Nicht unterstützter Fehler:

mysql> SELECT CAST('1024' AS int);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'int)' at line 1
Nach dem Login kopieren

Unterstützte Typen

Im Folgenden finden Sie eine Liste der von der CAST-Funktion unterstützten Datentypen:

类型 备注
DATE YYYY-MM-DD
DATETIME YYYY-MM-DD HH:mm:ss
TIME HH:mm:ss
DECIMAL 通常用于带小数位
CHAR 固定长度字符串
NCHAR 类型于CHAR一致
SIGNED 一个有符号的64整数位
UNSIGNED 一个无符号的64整数位
BINARY 二进制字符串
JSON MySQL 5.7.8 及更高版本

Hinweis:

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

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

Wenn es der 01.01.01 ist, wird es der 01.01.2001 sein.

mysql> select cast('999-11-11' as DATE);
+---------------------------+
| cast('999-11-11' as DATE) |
+---------------------------+
| 0999-11-11        |
+---------------------------+
1 row in set (0.00 sec)
Nach dem Login kopieren
mysql> select cast('01-11-11' as DATE);
+--------------------------+
| cast('01-11-11' as DATE) |
+--------------------------+
| 2001-11-11        |
+--------------------------+
1 row in set (0.00 sec)
Nach dem Login kopieren
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.20  |
+-----------+
1 row in set (0.00 sec)
Nach dem Login kopieren

2. Der Wert von expr in der CAST-Funktion kann in einen Typ konvertiert werden, und das Konvertierungsergebnis ist korrekt. Andernfalls hat das konvertierte Ergebnis einen Standardwert wie Null, 0 usw.

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

mysql> SELECT CAST('ANDYQIAN' AS DECIMAL);
+-----------------------------+
| CAST('ANDYQIAN' AS DECIMAL) |
+-----------------------------+
|              0 |
+-----------------------------+
1 row in set, 1 warning (0.00 sec)
Nach dem Login kopieren

Konvertierungsfall

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

Datumstyp

mysql> select cast('2017-12-14' as DATE);
+----------------------------+
| cast('2017-12-14' as DATE) |
+----------------------------+
| 2017-12-14         |
+----------------------------+
1 row in set (0.00 sec)
Nach dem Login kopieren

Typ ZEIT

mysql> select cast('12:00:00' as TIME);
+--------------------------+
| cast('12:00:00' as TIME) |
+--------------------------+
| 12:00:00         |
+--------------------------+
1 row in set (0.00 sec)
Nach dem Login kopieren

DATETIM-TYP

mysql> select cast('2017-12-14 00:11:11' as DATETIME);
+-----------------------------------------+
| cast('2017-12-14 00:11:11' as DATETIME) |
+-----------------------------------------+
| 2017-12-14 00:11:11           |
+-----------------------------------------+
1 row in set (0.00 sec)
Nach dem Login kopieren

SIGNIERTER Typ

mysql> select cast('-1024' as SIGNED);
+-------------------------+
| cast('-1024' as SIGNED) |
+-------------------------+
|          -1024 |
+-------------------------+
1 row in set (0.00 sec)
Nach dem Login kopieren

UNSIGNED-Typ

mysql> select cast('-1024' as UNSIGNED);
+---------------------------+
| cast('-1024' as UNSIGNED) |
+---------------------------+
|   18446744073709550592 |
+---------------------------+
1 row in set, 1 warning (0.00 sec)
Nach dem Login kopieren

DECIMAL-Typ

mysql> select cast('18.11' as DECIMAL(18,2));
+--------------------------------+
| cast('18.11' as DECIMAL(18,2)) |
+--------------------------------+
|             18.11 |
+--------------------------------+
1 row in set (0.00 sec)
Nach dem Login kopieren

Verwandte Empfehlungen:

Der beste Weg, die MySQL-Instanzfreigabe zu aktualisieren

Detaillierte Erklärung von PHP Kapselung der MySQL-Operationsklasse

Wie PHP das Problem der in MySQL gespeicherten verstümmelten chinesischen Daten löst

Das obige ist der detaillierte Inhalt vonBeispielfreigabe für die explizite MySQL-Typkonvertierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!