Bootstrap

SQL-CAST()

学习目标:

sql语句的cast()函数


学习内容:

定义

CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。

语法

CAST (expression AS data_type)

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

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

  • 二进制,同带binary前缀的效果 : BINARY
  • 字符型,可带参数 : CHAR()
  • 日期 : DATE
  • 时间: TIME
  • 日期时间型 : DATETIME
  • 浮点数 : DECIMAL
  • 整数 : SIGNED
  • 无符号整数 : UNSIGNED

用CAST函数进行数据类型转换时,在下列情况下能够被接受:
  (1)两个表达式的数据类型完全相同。
  (2)两个表达式可隐性转换。
  (3)必须显式转换数据类型。
  如果试图进行不可能的转换(例如,将含有字母的 char 表达式转换为 int 类型),SQLServer 将显示一条错误信息。
  如果转换时没有指定数据类型的长度,则SQServer自动提供长度为30。

示例

以下都是在sql server中运行

  1. 将文本字符串’12’转换为整型: SELECT CAST('12' AS int)
    在这里插入图片描述
    返回值是整型值12
  2. 如果试图将一个代表小数的字符串转换为整型值: SELECT CAST('12.5' AS int)
    在这里插入图片描述
    可以看出报错,12.5不能用int数据类型来表示。CAST()函数和CONVERT()函数都不能执行四舍五入或截断操作。
  3. 如果通过CAST()函数将这个值转换为decimal类型,需要首先定义decimal值的精度与小数位数 : SELECT CAST('12.5' AS decimal(9,2))
    在这里插入图片描述
    在本例中,精度与小数位数分别为9 与2。精度是总的数字位数,包括小数点左边和右边位数的总和。而小数位数是小数点右边的位数。这表示本例能够支持的最大的整数值是9999999,而最小的小数是0.01。
    例如:SELECT CAST('12.513' AS decimal(4,2)) 会四舍五入保留2位小数
    在这里插入图片描述
    SELECT CAST('12.513' AS decimal(3,2)) 会报错总位数最小为4
    在这里插入图片描述
  4. 精度和小数位数的默认值分别是18与0。如果在decimal类型中不提供这两个值,SQL Server将截断数字的小数部分,而不会产生错误。
    SELECT CAST('12.5' AS decimal)
    在这里插入图片描述
  5. 调用数据库获取数据时,若查询时直接转换最好设置别名,否则无法用McId获取值。
    select cast(McID as VARCHAR(36)) FROM ActDevList
    ActDevList表的McID字段值
    默认使用fileId1字段名
    若有多个cast()未命名
    select cast(McID as VARCHAR(36)),cast(McID as VARCHAR(36)),cast(McID as VARCHAR(36)) FROM ActDevList
    在这里插入图片描述
    select cast(McID as VARCHAR(36)) McID,cast(McID as VARCHAR(36)),cast(McID as VARCHAR(36)) FROM ActDevList
    在这里插入图片描述
  6. 时间类型转换
    Fedder表中InitialDate字段值
    select cast(InitialDate as char) from Feeder
    select cast(InitialDate as datetime ) as date from Feeder
    select cast(InitialDate as date) as date from Feeder
    select cast(InitialDate as time) as timefrom Feeder
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

select cast(sign_time as signed) from sign(MYSQL) 把日期转换为SIGNED int类型。
signed类型在sql sever中不适用
在这里插入图片描述

conclusion:cast()主要用于类型转换;在sql中转换用于比较大小排序比较多;


学习时间:

2021-07-14


总结

附:学习记录,方便查看

;