一, 语法:
CAST (expression AS data_type)
参数说明:
expression: 任何有效的 SQServer 表达式.
AS: 用于分隔两个参数, 在 AS 之前的是要处理的数据, 在 AS 之后是要转换的数据类型.
data_type: 目标系统所提供的数据类型, 包括 bigint 和 sql_variant, 不能使用用户定义的数据类型.
使用 CAST 函数进行数据类型转换时, 在下列情况下能够被接受:
(1) 两个表达式的数据类型完全相同.
(2) 两个表达式可隐性转换.
(3) 必须显式转换数据类型.
如果试图进行不可能的转换 (例如, 将含有字母的 char 表达式转换为 int 类型),SQServer 将显示一条错误信息.
如果转换时没有指定数据类型的长度, 则 SQServer 自动提供长度为 30.
二, 注意事项:
(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)
来源: http://www.bubuko.com/infodetail-3204126.html