关于SQL的cast()函数解析

 更新时间:2023年04月28日 09:24:48   作者:陈老老老板  
这篇文章主要介绍了关于SQL的cast()函数解析,CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型,需要的朋友可以参考下

注意:本文使用数据库为:MySQL5.6

解析: CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型。

CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。

语法:

CAST (expression AS data_type)
参数说明
expression任何有效的SQServer表达式。
AS用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。
data_type目标系统所提供的数据类型,包括bigint和sql_variant,不能使用用户定义的数据类型。
限制:

用CAST函数进行数据类型转换时,在下列情况下能够被接受:

(1)两个表达式的数据类型完全相同。   

(2)两个表达式可隐性转换。   

(3)必须显式转换数据类型。

如果试图进行不可能的转换(例如,将含有字母的 char 表达式转换为 int 类型),SQServer 将显示一条错误信息。

注意: 如果试图将一个代表小数的字符串转换为整型值,又会出现什么情况呢?

SELECT CAST('12.5' AS int)

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

在这里插入图片描述

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

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

在这里插入图片描述

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

SELECT CAST('12.5' AS decimal)
结果为 13

注意:在这个数据库版本会四舍五入,在其他版本可能不同,但用法相同

在这里插入图片描述

类型:

如果转换时没有指定数据类型的长度,则SQServer自动提供长度为30。
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED

例子:

1.SELECT CAST('9.0' AS decimal) 结果:9

在这里插入图片描述

2.SELECT CAST('9.5' AS decimal(10,2))

结果:9.50 注:(精度与小数位数分别为10与2。精度是总的数字位数,包括小数点左边和右边位数的总和。而小数位数是小数点右边的位数)

在这里插入图片描述

3.SELECT CAST(NOW() AS DATE)

结果:2017-11-27

在这里插入图片描述

到此这篇关于关于SQL的cast()函数解析的文章就介绍到这了,更多相关SQL的cast()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mYsql日期和时间函数不求人

    mYsql日期和时间函数不求人

    mYsql日期和时间函数不求人...
    2007-04-04
  • MySQL基础之多表查询案例分享

    MySQL基础之多表查询案例分享

    这篇文章主要为大家分享了几个MySQL基础中的多表查询案例,文中的示例代码简洁易懂,对我们学习MySQL有一定的帮助,需要的小伙伴可以了解一下
    2022-10-10
  • sql server自动编号的三种方法

    sql server自动编号的三种方法

    自增列是最简单和常见的方法,适用于大多数情况,本文介绍了SQL Server中三种常见的自动编号方法:自增列、序列和触发器,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • MySQL主从复制问题总结及排查过程

    MySQL主从复制问题总结及排查过程

    这篇文章主要介绍了MySQL主从复制问题总结及排查过程,mysql主从是常用的高可用架构之一,也是使用最广泛的的系统架构。在生产环境中mysql主从复制有时会出现复制错误问题。下文更多内容需要的小伙伴可以参考一下
    2022-03-03
  • MySQL表的碎片整理和空间回收的方法

    MySQL表的碎片整理和空间回收的方法

    本文主要介绍了MySQL表的碎片整理和空间回收的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • MySQL定位长事务(Identify Long Transactions)的实现

    MySQL定位长事务(Identify Long Transactions)的实现

    在MySQL的运行中,经常会遇到一些长事务,本文主要介绍了MySQL定位长事务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-09-09
  • Windows系统中配置开启MySQL数据库日志的完整步骤

    Windows系统中配置开启MySQL数据库日志的完整步骤

    这篇文章主要给大家介绍了关于Windows系统中配置开启MySQL数据库日志的完整步骤,大家要开启MySQL数据库的日志功能,可以按照本文介绍的步骤进行操作,需要的朋友可以参考下
    2023-09-09
  • MySQL中主键与rowid的使用陷阱总结

    MySQL中主键与rowid的使用陷阱总结

    这篇文章主要给大家总结介绍了关于MySQL中主键与rowid的使用陷阱,文中通过示例代码介绍的非常详细,对大家的学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • MySQL创建索引需要了解的

    MySQL创建索引需要了解的

    这篇文章主要介绍了MySQL创建索引需要了解的知识,帮助大家更正确的使用MySQL的索引,感兴趣的朋友可以了解下
    2021-04-04
  • MySQL in太多过慢的三种解决方案

    MySQL in太多过慢的三种解决方案

    在MySQL中有一个配置参数eq_range_index_dive_limit,它的作用是一个等值查询(比如:in 查询),使用扫描索引树的方式分析在MySQL内部叫做index dives,使用索引统计的方式分析在MySQL内部叫做index statistics,本文给大家介绍了MySQL in太多过慢的三种解决方案
    2024-05-05

最新评论