sql CAST用法

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

 

 

SELECT CAST('12' AS int)

 

 

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

 

SELECT CAST('12.5' AS int)  

 

 

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

 

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。spa

 

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

 

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

 

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

 

SELECT CAST('12.5' AS decimal)

 

    结果是一个整数值:12blog

 

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

 

SELECT ProductNumber, ProductLine, ProductModelID

FROM Production.Product

    ProductSubCategoryID < 4

 

 

 

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

若是使用下面的表达式,就不能获得但愿的结果,如图6-2所示。数学

复制代码
SELECT ProductNumber

+ '-'

+ ProductLine

+ '-'

+ ProductModelID AS BikeSerialNum

FROM Production.Product

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
复制代码

 

 

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

 

https://www.cnblogs.com/shuilangyizu/p/5952526.html

相关文章
相关标签/搜索