MySQL显式类型转换实例

  介绍

小编给大家分享一下MySQL显式类型转换实例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

定义

在之前的文章中,我们提到过投函数,用于显示进行类型转换。在避免隐式类型转换时,好处多多。其实这里面还有很多细节,是需要梳理下的。本文主要介绍了MySQL显式类型转换的基础知识,通过实例给出了分析结果,一起学习下吧。

  首先来看看下面这个转换:

mysql>, SELECT 铸(& # 39;2017 - 12 - 14 - & # 39;,AS 日期);   +----------------------------+   |,演员(& # 39;2017 - 12 - 14 - & # 39;,AS 日期),|   +----------------------------+   |,2017 - 12 - 14 -,,,,,,,,|   +----------------------------+   1,row  set 拷贝;(0.00,sec)

  其中:

  2017-12-14是待转换的数据。

  日期为转换后的类型。

  标准语法是这样的:

演员(expr  AS 类型)

  这里需要注意的是类类型型不支持所有的数据类型,而是支持特定的数据类型,也是今天这篇文章的重点。(我就吃过这个亏,想当然的以为支持所有数据类型,结果就被打脸了)。

  不支持的报错:

mysql>, SELECT 铸(& # 39;1024 & # 39;,AS  int);   ERROR  1064,(42000):,你have  an  ERROR 拷贝your  SQL 语法;,check 从而manual  that  corresponds 用your  MySQL  server  version  for 从而right  syntax 用use  near  & # 39; int) & # 39;, at  line  1

  支持的类型

  下面是投函数支持转换的数据类型列表:

  类型   备注   日期   YYYY-MM-DD   DATETIME   YYYY-MM-DD HH: mm: ss   时间   HH: mm: ss   小数   通常用于带小数位   字符   固定长度字符串   NCHAR   类型于CHAR一致   签署   一个有符号的64整数位   无符号   一个无符号的64整数位   二进制   二进制字符串   JSON   MySQL 5.7.8及更高版本

  注意:

  其中日期支持的范围是:1000-01-01至9999-12-31,(实验版本为:)

  如果为:999-01-01结果则会0999-01-01。

  如果为:01-01-01则会为:2001-01-01。

mysql>, select 铸(& # 39;999 - 11 - 11 & # 39;,as 日期);   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   |,演员(& # 39;999 - 11 - 11 & # 39;,as 日期),|   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   |,0999 - 11 - 11,,,,,,,|   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   1,row  set 拷贝;(0.00,sec) mysql>, select 铸(& # 39;01-11-11& # 39;,as 日期);   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   |,演员(& # 39;01-11-11& # 39;,as 日期),|   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   |,2001 - 11 - 11,,,,,,,|   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   1,row  set 拷贝;(0.00,sec) mysql>, select 版本();   + - - - - - - - - - - - - +   |,版本()|   + - - - - - - - - - - - - +   |,5.7.20  |   + - - - - - - - - - - - - +   1,row  set 拷贝;(0.00,sec)

  2. 投函数中expr的值可以转换为类型,其转换的结果才正确,否则转换后的结果默认值,如空,0等。

  例如:一个字符类型转换为Demical类型,转换的结果就为0。

mysql>, SELECT 铸(& # 39;ANDYQIAN& # 39;, AS 十进制);   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   |,演员(& # 39;ANDYQIAN& # 39;, AS 十进制),|   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   |,,,,,,,,,,,,,,0 |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   1,row 集,拷贝,1,warning  (0.00, sec)

  转换案例

  这里给出一些常用的类型转换例子。

  日期类型

mysql>, select 铸(& # 39;2017 - 12 - 14 - & # 39;,as 日期);   +----------------------------+   |,演员(& # 39;2017 - 12 - 14 - & # 39;,as 日期),|   +----------------------------+   |,2017 - 12 - 14 -,,,,,,,,|   +----------------------------+   1,row  set 拷贝;(0.00,sec)

MySQL显式类型转换实例