MySQL显式类型转换的示例分析
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下MySQL显式类型转换的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!CAST 函数在之前的文章
千家信息网最后更新 2026年11月01日MySQL显式类型转换的示例分析
小编给大家分享一下MySQL显式类型转换的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
CAST 函数
在之前的文章中,我们提到过CAST函数,用于显示进行类型转换。在避免隐式类型转换时,好处多多。其实这里面还有很多细节,是需要梳理下的。
首先来看看下面这个转换:
mysql> SELECT CAST('2017-12-14' AS DATE);+----------------------------+| CAST('2017-12-14' AS DATE) |+----------------------------+| 2017-12-14 |+----------------------------+1 row in set (0.00 sec)其中:
2017-12-14 是待转换的数据。
DATE为转换后的类型。
标准语法是这样的:
CAST(expr AS type)
这里需要注意的是type类型不支持所有的数据类型,而是支持特定的数据类型,也是今天这篇文章的重点。(我就吃过这个亏,想当然的以为支持所有数据类型,结果就被打脸了) 。
不支持的报错:
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支持的类型
下面是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 及更高版本 |
注意:
其中DATE支持的范围是: 1000-01-01 至 9999-12-31,(实验版本为:)
如果为: 999-01-01 结果则会0999-01-01。
如果为: 01-01-01则会为: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)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. CAST函数中expr的值可以转换为type,其转换的结果才正确,否则转换后的结果默认值,如Null,0等。
例如:一个Char类型转换为Demical类型,转换的结果就为0。
mysql> SELECT CAST('ANDYQIAN' AS DECIMAL);+-----------------------------+| CAST('ANDYQIAN' AS DECIMAL) |+-----------------------------+| 0 |+-----------------------------+1 row in set, 1 warning (0.00 sec)转换案例
这里给出一些常用的类型转换例子。
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)TIME 类型
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 类型
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)SIGNED类型
mysql> select cast('-1024' as SIGNED);+-------------------------+| cast('-1024' as SIGNED) |+-------------------------+| -1024 |+-------------------------+1 row in set (0.00 sec)UNSIGNED类型
mysql> select cast('-1024' as UNSIGNED);+---------------------------+| cast('-1024' as UNSIGNED) |+---------------------------+| 18446744073709550592 |+---------------------------+1 row in set, 1 warning (0.00 sec)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)以上是"MySQL显式类型转换的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
类型
支持
数据
结果
函数
篇文章
示例
分析
内容
字符
字符串
数位
版本
符号
一致
想当然
不怎么
二进制
例子
备注
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司
中智农互联网科技
保险科技 互联网保险
互联网属科技
互联网通讯科技
青岛互联网科技公司
智网互联网科技
唐信互联网科技 大连
碳银互联网科技有限公司
顺玮阁互联网科技
猫创互联网科技
新华互联网科技校企合作
顶级互联网科技成果有哪些
移动互联网科技股
银川新华互联网科技学校联系电话
想开互联网科技公司怎么样
长沙互联网科技
工业互联网展湾科技股份有限公司
互联网科技年终奖
株洲百竞科技的互联网营销顾问
精品咖啡豆
互联网科技公司
科技股互联网
智慧科技互联网
甘肃拓世互联网科技有限公司
赶超互联网科技 微信多开
工业互联网等科技实现智能化赋能
互联网科技接地气
互联网科技大会大佬
数字科技和互联网金融哪个好