千家信息网

MySQL显式类型转换的示例分析

发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,小编给大家分享一下MySQL显式类型转换的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!CAST 函数在之前的文章
千家信息网最后更新 2025年11月12日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函数支持转换的数据类型列表:

类型备注
DATEYYYY-MM-DD
DATETIMEYYYY-MM-DD HH:mm:ss
TIMEHH:mm:ss
DECIMAL通常用于带小数位
CHAR固定长度字符串
NCHAR类型于CHAR一致
SIGNED一个有符号的64整数位
UNSIGNED一个无符号的64整数位
BINARY二进制字符串
JSONMySQL 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安全错误 数据库的锁怎样保障安全 幼儿园网络安全制度和措施 社区开展网络安全进校园 浦东新区网络技术服务行业标准 文明重启哪个服务器最安全 虹口区智能化软件开发常见问题 网络安全三年级上册字少的手抄报 郴州市学电脑软件开发培训哪家好 数据库技术及应用 十三五 广州海星互联网科技 广州千指网络技术有限公司 svn服务器怎么管理 数据库sql语义分析 软件开发广告速推 黑暗之魂3服务器删除了吗 wifi第4代网络技术标准 如何做网络安全作业 成都肆零肆网络技术公司的产品 软件开发版权的谈判 服务器硬盘黄灯一直亮是什么原因 互联网金融服务器 铁路集团网络安全红线管理 服务器怎么建立远程连接 乌梁素海住宿软件开发 软件开发需要什么app 数据库按进度付款怎么做无形资产 百度的服务器后台是否安全 杭州制造软件开发亿连信 win7同步时间服务器 数据库怎么导出dll 维护mes 和sap数据库
0