谈谈MySQL显式类型转换
来源:互联网 发布:大数据需要哪些知识 编辑:程序博客网 时间:2024/06/07 12:41
本文首发于个人微信公众号《andyqian》,期待您的关注!
前言
我们之前谈了《谈谈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支持的范围是:
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索引
读懂MySQL执行计划
谈谈MySQL隐式类型转换
扫码关注,一起进步
个人博客: http://www.andyqian.com
- 谈谈MySQL显式类型转换
- 谈谈MySQL隐式类型转换
- 谈谈强制类型转换
- 谈谈强制类型转换
- 谈谈C++的类型转换。
- 谈谈Nullable<T>的类型转换问题
- 显式类型转换
- 显式类型转换
- Mysql 数字类型转换
- mysql 类型转换函数
- mysql类型转换
- mysql 类型转换函数
- mysql查询类型转换
- mysql 类型转换
- MySQL类型转换注意事项
- mysql 转换类型
- mysql 字段类型转换
- Mysql强制类型转换
- UVA 315--Network
- 最近买了服务器和域名,转到新博客啦!!
- php_igbinary+php_redis(从PHP5.3到7.2)最全集合
- [状压DP] TopCoderSRM549 DIV1 600. MagicalHats
- 【arduino】【u8g2库】OLED屏-U8glib库 增强版 U8G2库
- 谈谈MySQL显式类型转换
- 机房收费系统之一
- 线程
- Php-fpm的配置和优化
- Scaling Memcache at Facebook论文阅读笔记
- 13个能快速开发android的经典项目
- 透视“共享单车技术含量”
- 文章标题
- 工作笔记之ocx注册失败