Maison > base de données > tutoriel mysql > le corps du texte

Partage d'exemples de conversion de type explicite MySQL

小云云
Libérer: 2018-01-05 16:36:27
original
1506 Les gens l'ont consulté

Dans l'article précédent, nous avons mentionné la fonction CAST, qui est utilisée pour la conversion de type explicite. Il existe de nombreux avantages à éviter les conversions de type implicites. En fait, il reste encore de nombreux détails à régler. Cet article présente principalement les connaissances de base de la conversion de type explicite MySQL et donne les résultats de l'analyse à travers des exemples.

Tout d’abord, jetons un œil à la conversion suivante :

mysql> SELECT CAST('2017-12-14' AS DATE);
+----------------------------+
| CAST('2017-12-14' AS DATE) |
+----------------------------+
| 2017-12-14         |
+----------------------------+
1 row in set (0.00 sec)
Copier après la connexion

Parmi eux :

2017-12-14 sont les données à convertir.

DATE est le type converti.

La syntaxe standard est la suivante :

CAST(expr AS type)
Copier après la connexion

Ce qu'il faut noter ici, c'est que le type type ne prend pas en charge tous les types de données, mais prend en charge des types de données spécifiques, ce qui est également le sujet de l'article d'aujourd'hui. (J'ai subi cette perte. Je tenais pour acquis que tous les types de données étaient pris en charge, mais j'ai été giflé).

Erreur non prise en charge :

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
Copier après la connexion

Types pris en charge

Voici une liste des types de données pris en charge par la fonction CAST :

类型 备注
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 及更高版本

Remarque :

La plage de DATE prise en charge est : 1000-01-01 à 9999-12-31, (la version expérimentale est :)

Si c'est : 999-01-01, le résultat sera 0999-01-01.

Si c'est : 01-01-01, ce sera : 2001-01-01.

mysql> select cast('999-11-11' as DATE);
+---------------------------+
| cast('999-11-11' as DATE) |
+---------------------------+
| 0999-11-11        |
+---------------------------+
1 row in set (0.00 sec)
Copier après la connexion
mysql> select cast('01-11-11' as DATE);
+--------------------------+
| cast('01-11-11' as DATE) |
+--------------------------+
| 2001-11-11        |
+--------------------------+
1 row in set (0.00 sec)
Copier après la connexion
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.20  |
+-----------+
1 row in set (0.00 sec)
Copier après la connexion

2. La valeur de expr dans la fonction CAST peut être convertie en type et le résultat de la conversion sera correct. Sinon, le résultat converti aura une valeur par défaut, telle que Null, 0, etc.

Par exemple : si un type Char est converti en type Demical, le résultat de la conversion est 0.

mysql> SELECT CAST('ANDYQIAN' AS DECIMAL);
+-----------------------------+
| CAST('ANDYQIAN' AS DECIMAL) |
+-----------------------------+
|              0 |
+-----------------------------+
1 row in set, 1 warning (0.00 sec)
Copier après la connexion

Cas de conversion

Voici quelques exemples de conversion de type couramment utilisés.

Type DATE

mysql> select cast('2017-12-14' as DATE);
+----------------------------+
| cast('2017-12-14' as DATE) |
+----------------------------+
| 2017-12-14         |
+----------------------------+
1 row in set (0.00 sec)
Copier après la connexion

Type d'heure

mysql> select cast('12:00:00' as TIME);
+--------------------------+
| cast('12:00:00' as TIME) |
+--------------------------+
| 12:00:00         |
+--------------------------+
1 row in set (0.00 sec)
Copier après la connexion

TYPE DE DATETIM

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)
Copier après la connexion

Type SIGNÉ

mysql> select cast('-1024' as SIGNED);
+-------------------------+
| cast('-1024' as SIGNED) |
+-------------------------+
|          -1024 |
+-------------------------+
1 row in set (0.00 sec)
Copier après la connexion

Type NON SIGNÉ

mysql> select cast('-1024' as UNSIGNED);
+---------------------------+
| cast('-1024' as UNSIGNED) |
+---------------------------+
|   18446744073709550592 |
+---------------------------+
1 row in set, 1 warning (0.00 sec)
Copier après la connexion

Type DECIMAL

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)
Copier après la connexion

Recommandations associées :

La meilleure façon de mettre à niveau le partage d'instance MySQL

Explication détaillée de php encapsulation de la classe d'opération Mysql

Comment PHP résout le problème des données chinoises tronquées stockées dans MySQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!