`

CAST函数

阅读更多
http://blog.sina.com.cn/s/blog_62822a7f0100fii6.html


6.4  转换函数

数据类型转换可以通过CAST()和CONVERT()函数来实现。大多数情况下,这两个函数是重叠的,它们反映了SQL语言的演化历史。这两个函数的功能相似,不过它们的语法不同。虽然并非所有类型的值都能转变为其他数据类型,但总的来说,任何可以转换的值都可以用简单的函数实现转换。

6.4.1  CAST()函数

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

    SELECT CAST('123' AS int)

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

    SELECT CAST('123.4' AS int) 

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

    Server: Msg 245, Level 16, State 1, Line 1 
    Syntax error converting the varchar value
    '123.4' to a column of data type int.

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

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

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

    123.40

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

    SELECT CAST('123.4' AS decimal)

结果是一个整数值:

    123

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

    SELECT ProductNumber, ProductLine, ProductModelID  
    FROM Production.Product 
    WHERE ProductSubCategoryID < 4

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

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

    SELECT ProductNumber  
           + '-'  
           + ProductLine  
           + '-'  
           + ProductModelID AS BikeSerialNum 
    FROM Production.Product 
    WHERE ProductSubCategoryID < 4


(点击查看大图)图  6-2

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

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

    SELECT ProductNumber  
           + '-'  
           + ProductLine  
           + '-'  
           + CAST(ProductModelID AS char(4)) AS BikeSerialNum 
    FROM Production.Product 
    WHERE ProductSubCategoryID < 4

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

图  6-3
分享到:
评论

相关推荐

    源于MATLAB中cast和typecast函数数据格式的探讨.rar

    通过详细阅读"源于MATLAB中cast和typecast函数数据格式的探讨.pdf"文件,你将能够进一步了解这两个函数的详细工作原理、使用示例以及在实际问题中的应用策略。这份资料可能会涵盖不同数据类型的转换规则,可能的陷阱...

    源于MATLAB中cast和typecast函数数据格式的探讨.pdf

    通过对MATLAB教材中习题的解答,分析了cast和typecast两个函数,介绍了大端和小端两种字节序类型,以及整数及浮点数在计算机中的存储格式。由此,可以使学生学会使用MATLAB函数,并了解数据在计算机中存储格式。

    mysql内部函数

    - Cast函数用于将值从一种数据类型转换为另一种,如 `CAST(A AS INT)` 将A转换为整数。 9. **其他函数**: - 包括位函数(如 `BIT_AND`, `BIT_OR`),加密函数(如 `ENCRYPT`, `AES_ENCRYPT`),信息函数(如 `...

    浅谈C++中强制类型转换函数

    dynamic_cast常用于基类和子类之间的转换,需要在无法使用virtual函数时使用。 reinterpret_cast是重新解释类型的操作符,它可以将一个类型转换为另一个类型,但没有进行二进制的转换。reinterpret_cast常用于将一...

    SQL中convert和cast的区别

    SQL 中的 Convert 和 Cast 是两个常用的数据类型转换函数,但它们之间存在着一些关键的区别。在实际应用中,选择合适的函数可以提高编程效率和数据处理的准确性。 Convert 函数 Convert 函数是 SQL Server 自带的...

    MySQL常用类型转换函数总结(推荐)

    1、Concat函数。...2、Cast函数;CONVERT函数。 用法:CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name). SELECT CONVERT('abc' USING utf8); 将varchar 转为Int 用 ca

    CONVERT和cast的用法

    ### CONVERT和CAST函数详解 在SQL语言中,`CONVERT`和`CAST`是两种非常重要的数据类型转换函数,它们被广泛应用于各种数据库系统中,如Microsoft SQL Server、Oracle等。这两种函数的主要作用是在不改变表结构的...

    postgresql中的cast

    ### PostgreSQL中的CAST操作详解 在数据库管理与查询过程中,数据类型转换是一项常见且重要的操作。PostgreSQL作为一种功能强大的开源关系型数据库系统,提供了多种方式进行数据类型转换,其中`CAST`是一种常用的...

    SQL SERVER 关于日期函数(字符转日期,日期转字符串)

    在 SQL Server 中,可以使用 CAST 或 CONVERT 函数将字符转换为日期。CAST 函数的语法为: CAST ( expression AS data_type ) 其中,expression 是要转换的字符数据,data_type 是目标数据类型。 例如: SELECT ...

    JSqlparser4.4版作者提供的应急版,解决无法解析mysql中JSON_OBJECT函数存在其它函数问题

    如下sql,JSON_OBJECT函数中存在CAST函数,随后报出ParseException问题! SELECT JSON_ARRAYAGG(obj) FROM (SELECT trt.relevance_id,JSON_OBJECT('id',CAST(trt.id AS CHAR),'taskName',trt.task_name,'openStatus'...

    oracle 函数文档

    6. **转换函数**:TO_NUMBER用于将字符串转换为数值,DECODE函数提供了一种简单的条件判断,而CAST函数可以将一种数据类型转换为另一种。 7. **其他函数**:包括位运算函数(BITAND、BITOR等)、级联查询的CONNECT_...

    mysql的日期和时间函数

    mysql的日期和时间函数 这里是一个使用日期函数的例子。下面的查询选择所有 date_col 值在最后 30 天内的记录。 mysql&gt; SELECT something FROM tbl_name WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) ...

    typecast 和 typecastx C-mex 函数:typecast 和 typecastx 是 mex 函数,它们模仿带有扩展的 MATLAB typecast 函数-matlab开发

    TYPECAST 和 TYPECASTX 是 mex 函数,旨在通过扩展来模拟 MATLAB 内部类型转换函数。 这些 C-mex 版本的类型转换在以下重要方面与内在类型转换不同: 内在类型转换------------------ 复制类型:深度数据复制允许...

    matlab函数[借鉴].pdf

    2. **cast.m**: cast函数用于将数组或变量转换为另一种数据类型,如double、int32、char等,这在处理不同数据格式时非常有用。 3. **cell2mat.m**: 它将一个cell数组转换为矩阵。如果cell数组中的所有元素都是同型...

    金蝶K3进度15-数据类型转换操作流程.docx

    CAST和CONVERT的主要区别在于语法不同,CAST函数不提供style参数,而CONVERT函数提供style参数,可以转化成不同时间的格式。 在时间转化中,通常使用CONVERT函数,因为它可以提供style参数,可以转化成不同的时间...

    Sql Server 2012 转换函数的比较(Cast、Convert和Parse)

    Cast函数遵循ANSI SQL标准,其语法为`CAST ( expression AS data_type [ ( length ) ] )`。expression是要转换的值,data_type是目标数据类型,length(可选)用于指定某些数据类型的长度。Cast函数简单易用,但在...

    cast()函数和convert()函数.docx

    `CAST()`和`CONVERT()`函数就是SQL中用于此目的的关键工具。这两个函数的主要功能是将一个数据类型的值转换为另一个数据类型,但它们在用法上略有不同。 **`CAST()`函数** `CAST()`函数的语法简洁明了,它接受两个...

    在SQL查询中如何截取字符串后转成数值型?

    `CAST`函数提供了一种更简洁的类型转换方式,其语法类似于`CONVERT`,但在某些数据库系统中,如PostgreSQL和SQL Server中,它可能更加直观。其语法如下: ```sql CAST(string_expression AS data_type) ``` 同样的...

    SQL Server 2014基础入门视频教程 (40集,含课件)

    SQL Server 2014基础入门视频教程 (40集,含课件) 1.SQL Server 2014简介.mp4 2.SQL Server 2014硬件和软件要求.mp4 ... 39.SQL Server 2014 CAST函数.mp4 40.SQL Server 2014 CASE函数.mp4

    python wordcloud

    python的第3方库,用于生成词云,需要安装c++14.0 否则可能运行错误

Global site tag (gtag.js) - Google Analytics