Heim >Datenbank >MySQL-Tutorial >Beispielfreigabe für die explizite MySQL-Typkonvertierung

Beispielfreigabe für die explizite MySQL-Typkonvertierung

小云云
小云云Original
2018-01-05 16:36:271575Durchsuche

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)

Darunter:

2017-12-14 sind die zu konvertierenden Daten.

DATE ist der konvertierte Typ.

Die Standardsyntax lautet:

CAST(expr AS type)

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

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)
mysql> select cast('01-11-11' as DATE);
+--------------------------+
| cast('01-11-11' as DATE) |
+--------------------------+
| 2001-11-11        |
+--------------------------+
1 row in set (0.00 sec)
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.20  |
+-----------+
1 row in set (0.00 sec)

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)

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)

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)

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)

SIGNIERTER Typ

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

UNSIGNED-Typ

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

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)

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!

Stellungnahme:
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