(1).CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。以下例子用于将文本字符串'12'转换为整型:

SELECT CAST('12' AS int)

(2).返回值是整型值12。如果试图将一个代表小数的字符串转换为整型值,又会出现什么情况呢?

SELECT CAST('12.5' AS int)

(3).CAST()函数和CONVERT()函数都不能执行四舍五入或截断操作。由于12.5不能用int数据类型来表示,所以对这个函数调用将产生一个错误:

Server: Msg 245, Level 16, State 1, Line 1

Syntax error converting the varchar value

'12.5' to a column of data type int.

(4). 要返回一个合法的数值,就必须使用能处理这个值的数据类型。对于这个例子,存在多个可用的数据类型。如果通过CAST()函数将这个值转换为 decimal类型,需要首先定义decimal值的精度与小数位数。在本例中,精度与小数位数分别为9 与2。精度是总的数字位数,包括小数点左边和右边位数的总和。而小数位数是小数点右边的位数。这表示本例能够支持的最大的整数值是9999999,而最小 的小数是0.01。

SELECT CAST('12.5' AS decimal(9,2))

decimal数据类型在结果网格中将显示有效小数位: 12.50

(5).精度和小数位数的默认值分别是18与0。如果在decimal类型中不提供这两个值,SQL Server将截断数字的小数部分,而不会产生错误。

SELECT CAST('12.5' AS decimal)

结果是一个整数值:12

(6).在表的数据中转换数据类型是很简单的。下面的例子使用Product表,首先执行如下查询:

SELECT ProductNumber, ProductLine, ProductModelID

FROM Production.Product

ProductSubCategoryID < 4

(7). 假定产品经理已经创建了一个系统,用于唯一地标识生产出来的每辆自行车,以便跟踪其型号、类型和类别。他决定合并产品号、产品生产线标识符、产品型号标识 符和一个顺序号,为生产出来的每辆自行车创建一个唯一的序列号。在这个过程的第一步,他要求提供包括除顺序号之外的所有属性的所有可能产品的根标识符。

如果使用下面的表达式,就不能得到希望的结果,如图6-2所示。

1.SELECT ProductNumber

2.+ '-'

3.+ ProductLine

4.+ '-'

5.+ ProductModelID AS BikeSerialNum

6.FROM Production.Product

7.WHERE ProductSubCategoryID < 4

我 们没有得到希望的结果,而得到了有点奇怪的错误消息:请把nvarchar值转换为 int。因为之前我们没有要求进行任何转换,所以这个错误很奇怪。这个查询的问题在于我们试图利用第一个连接符来连接字符值ProductNumber, 利用第二个连接符连接另一个字符值ProductLine,最后连接的是ProductModelID字符值(它是一个整数)。

查询引擎会把连接符当成一个数学运算符,而不是一个字符。不管结果是什么,都需要更正这个表达式,以确保使用正确的数据类型。以下表达式执行了必要的类型转换,返回如图6-3所示的结果:

SELECT ProductNumber

+ '-'

+ ProductLine

+ '-'

+ CAST(ProductModelID AS char(4)) AS BikeSerialNum

FROM Production.Product

WHERE ProductSubCategoryID < 4

如果把整型值转换为字符类型就不会增加多余的空格了。查询引擎将把这些值用加号和连接符组合在一起,进行字符串连接运算,而不是和前面的数值进行加法或者减法运算了。

-------------------------------------------

MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。两者具体的语法如下:

1

CAST(valueas type);

2

CONVERT(value, type);

就是CAST(xxx AS 类型), CONVERT(xxx,类型)。

可以转换的类型是有限制的。这个类型可以是以下值其中的一个:

二进制,同带binary前缀的效果 : BINARY

字符型,可带参数 : CHAR()

日期 : DATE

时间: TIME

日期时间型 : DATETIME

浮点数 : DECIMAL

整数 : SIGNED

无符号整数 : UNSIGNED

下面举几个例子:

例一

1

mysql>SELECT CONVERT('23',SIGNED);

2

+----------------------+

3

|CONVERT('23',SIGNED) |

4

+----------------------+

5

|                   23 |

6

+----------------------+

7

1 rowin set

例二

1

mysql>SELECT CAST('125e342.83' AS signed);

2

+------------------------------+

3

|CAST('125e342.83' AS signed) |

4

+------------------------------+

5

|                          125 |

6

+------------------------------+

7

1 rowin set

例三

1

mysql>SELECT CAST('3.35' AS signed);

2

+------------------------+

3

|CAST('3.35' AS signed) |

4

+------------------------+

5

|                      3 |

6

+------------------------+

7

1 rowin set

像上面例子一样,将varchar 转为int 用 cast(a as signed),其中a为varchar类型的字符串。

例4

在SQL Server中,下面的代码演示了datetime变量中,仅包含单纯的日期和单纯的时间时,日期存储的十六进制存储表示结果。

01

DECLARE @dt datetime

02

03

--单纯的日期

04

SET @dt='1900-1-2'

05

SELECT CAST(@dtas binary(8))

06

--结果: 0x0000000100000000

07

08

--单纯的时间

09

SET @dt='00:00:01'

10

SELECT CAST(@dtas binary(8))

11

--结果: 0x000000000000012C

MySQL的类型转换和SQL Server一样,就是类型参数有点点不同:CAST(xxx AS 类型) , CONVERT(xxx,类型)。

mysql cast as_Mysql SQL CAST()函数相关推荐

  1. mySQL中stuff,sql stuff函数的语法和作用

    sql stuff函数用于删除指定长度的字符,并可以在制定的起点处插入另一组字符.sql stuff函数中如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长度,将返回空字符串.如果要删除 ...

  2. SQL转换函数(CAST 和 CONVERT)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 如果 S ...

  3. 【SQL编程】Greenplum 与 MySQL 数据库获取周几函数及函数结果保持一致的方法

    1.问题说明 项目有两个不同的平台分别使用 Greenplum 和 MySQL 数据库,但是这两个数据库的函数是不相同的,所以需要维护两套查询 SQL. 2.根据周几获取数据 2.1 原始函数结果 M ...

  4. mysql替换sql中rank函数_MySQL sql Rank()函数实现

    一字符串类 Ø  Concat函数:连接字符串 Ø  Instr函数:返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始) Ø  字符串大小写转换[upper().u ...

  5. mysql开窗函数_魔幻的SQL开窗函数,为您打开进阶高手的一扇天窗

    经常写SQL脚本的朋友,通常会有一种迷之自信,似乎各种问题都有自己的一套解决方案.时间长了,人的思维可能会逐渐固化.思维固化能提高工作效率,但从某些角度看是很可怕的,我们也同时会失去接受新知识的内在动 ...

  6. mysql sql总计函数_请问select SQL 语言中常用的合计函数有哪些?

    1.sql中sum和count的区别 ----sql聚合函数 (1)首先,sum是对一个字段求和,hive中字段的类型一般是string或者是int,如果是int当然没有问题,如果是string类型但 ...

  7. MySQL学习思维导图(MySQL简介、SQL基础命令、约束、单表查询、多表查询、内置函数、存储过程、视图、事务、索引)

    MySQL学习思维导图 内容包括:MySQL简介.SQL基础命令.约束.单表查询.多表查询.内置函数.存储过程.视图.事务.索引 文章目录 MySQL学习思维导图 一.MySQL简介 二.SQL基础命 ...

  8. Hive3入门至精通(基础、部署、理论、SQL、函数、运算以及性能优化)15-28章

    Hive3入门至精通(基础.部署.理论.SQL.函数.运算以及性能优化)15-28章 [Hive3入门至精通(基础.部署.理论.SQL.函数.运算以及性能优化)1-14章](https://blog. ...

  9. Sql Server函数全解三数据类型转换函数和文本图像函数

    原文:Sql Server函数全解<三>数据类型转换函数和文本图像函数 一:数据类型转换函数 在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近 ...

最新文章

  1. 菜鸟初涉SQL Server的总结
  2. 使用CV2和Keras OCR从图像中删除文本
  3. ubuntu ufw防火墙
  4. poj1182(加权值的并查集)
  5. 如何利用OpenSSL生成证书
  6. 华中数控机器人编程循环三次_数控机床固定循环编程(G80~G84)详解
  7. python中char的用法_如何从C++返回char **并使用cType在Python中填充它?
  8. 拉结尔6月21日服务器维护,《拉结尔》6月11日更新公告
  9. laravel访问路由在nginx服务器上无法处理
  10. Mybaits整个Spring项目,简单示例,10分钟快速上手
  11. SAP中检查货币代码
  12. Nature子刊:高通量蛋白质组学方法学综述
  13. 计算机限制无法压缩,电脑上文件夹压缩不了怎么办
  14. Linux系统图形界面,字符界面切换快捷键。启动图形界面服务。
  15. 存折和银行卡的区别?
  16. 2012 r2 万能网卡驱动_6款USB无线网卡评测
  17. 51单片机精确延时设计
  18. 北京语言大学计算机英语统考,大学英语b级复习资料_统考英语b题库|北语网院大学英语b辅导...
  19. TCP/IP协议栈之LwIP(六)---网络传输管理之TCP协议
  20. NLP学习————实现一个BERT(简记)

热门文章

  1. matlab绘制带阴影的曲线
  2. 3月6日服务器例行维护公告,【已开服】《新天龙八部》3月6日全服更新维护公告...
  3. 支付宝一年新增四亿行代码!他们的支付模块是如何设计开发的?
  4. 3.0、Hibernate-延迟加载 1
  5. [附源码]SSM计算机毕业设计海南生鲜冷链物流配送系统论文JAVA
  6. JSON格式简介及一些对应函数
  7. WTM(ASP.NET Core)使用SignalR,后台网页接收实时消息通知
  8. AToken全观:V神发话了,支持钱包开发者收取额外交易费
  9. 登山登山... ...
  10. 1个小时学会wordpress模板制作(入门级)