- 浏览: 101259 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (133)
- jQuery (11)
- XML (3)
- 组件 (1)
- JAVA (20)
- WEB (3)
- SPRING (6)
- HIBERNATE (5)
- AJAX (2)
- JS (1)
- JAVA webservice (1)
- Ditu (1)
- WEBSITE (1)
- HIBERNATE ANNOTATION (1)
- 排序 (1)
- TCP_NODELAY (1)
- ConvertUtils (1)
- Logistics (1)
- SQL SERVER 中identity (4)
- sql server (35)
- MYSQL (1)
- Eclipse (6)
- ORACLE (6)
- FLEX (4)
- notepad++ (0)
- UNION ALL (1)
- JUnit (3)
- SQL 异常处理 (1)
- @@trancount (1)
- IOS (1)
- ORA-02266 (1)
- REMOTE DESKTOP (0)
- HTML 优化 (1)
- CRLF (1)
- SQL Server Sequence (1)
最新评论
-
zjuttsw:
看的舒服
重要的hashcode equals转载
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
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
发表评论
-
WITH (NOLOCK)
2014-09-28 11:56 590http://www.cnblogs.com/henw/arc ... -
SQL Server Profiler使用方法
2014-05-21 16:55 634http://lyt7599.blog.163.com/blo ... -
SQL Server Error Message
2014-05-20 20:20 1306http://www.sql-server-helper.co ... -
SQL锁的概述
2014-05-16 14:39 421http://blog.csdn.net/htl258/art ... -
SET...
2013-12-31 11:16 337http://msdn.microsoft.com/en-us ... -
DATE
2013-12-30 15:23 472http://blog.csdn.net/dba_huangz ... -
DATE AND TIME
2013-12-30 14:22 575SELECT (CAST((SELECT SUBSTRING( ... -
Microsoft SQL Server, Error:9002
2013-09-25 17:48 1045一般在建立一个database之后,就应该手动设置其日志的增长 ... -
SQL 2005 with(nolock)详解
2013-08-26 15:46 604http://hi.baidu.com/gabriel/ite ... -
EXISTS AND NOT EXISTS
2013-07-16 14:51 485EXISTS或者NOT EXISTS是把主查询的字段传到后边的 ... -
is invalid in the select list because it is not contained in either an aggregate
2013-07-11 10:37 961当select 语句块中出现function与常列时,需要在w ... -
A interesting article for printing statement in sql
2013-07-09 11:57 448http://bytes.com/topic/sql-serv ... -
Good net website blog for Database
2013-07-09 11:53 823http://www.bluegecko.net/mysql/ ... -
how to search a function or sto in database
2013-07-08 14:02 699SELECT * FROM sysobjects WHERE ... -
Good SQL WEBSITE 细说Sql Server中的视图(上)(更新)
2013-07-08 11:38 533http://www.cnblogs.com/xbf321/a ... -
SQLServer : EXEC和sp_executesql的区别
2013-07-08 11:36 565http://www.cnblogs.com/xbf321/a ... -
Search for a stored procedure
2013-07-08 11:27 662September 3, 2007 by Pinal Dave ... -
TRUNCATE TABLE
2013-06-27 10:43 489默认情况下,IDENTITY_INSER就是off 这种情况下 ... -
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
2013-06-18 14:08 558http://www.cnblogs.com/freshman ... -
安装了SQL以后,编写SQL语句没有提示
2013-06-18 09:55 610安装了SQL以后,编写SQL语句没有提示解决办法: 工具— ...
相关推荐
通过对MATLAB教材中习题的解答,分析了cast和typecast两个函数,介绍了大端和小端两种字节序类型,以及整数及浮点数在计算机中的存储格式。由此,可以使学生学会使用MATLAB函数,并了解数据在计算机中存储格式。
通过详细阅读"源于MATLAB中cast和typecast函数数据格式的探讨.pdf"文件,你将能够进一步了解这两个函数的详细工作原理、使用示例以及在实际问题中的应用策略。这份资料可能会涵盖不同数据类型的转换规则,可能的陷阱...
TYPECAST 和 TYPECASTX 是 mex 函数,旨在通过扩展来模拟 MATLAB 内部类型转换函数。 这些 C-mex 版本的类型转换在以下重要方面与内在类型转换不同: 内在类型转换------------------ 复制类型:深度数据复制允许...
### PostgreSQL中的CAST操作详解 在数据库管理与查询过程中,数据类型转换是一项常见且重要的操作。PostgreSQL作为一种功能强大的开源关系型数据库系统,提供了多种方式进行数据类型转换,其中`CAST`是一种常用的...
`CAST()`和`CONVERT()`函数就是SQL中用于此目的的关键工具。这两个函数的主要功能是将一个数据类型的值转换为另一个数据类型,但它们在用法上略有不同。 **`CAST()`函数** `CAST()`函数的语法简洁明了,它接受两个...
- Cast函数用于将值从一种数据类型转换为另一种,如 `CAST(A AS INT)` 将A转换为整数。 9. **其他函数**: - 包括位函数(如 `BIT_AND`, `BIT_OR`),加密函数(如 `ENCRYPT`, `AES_ENCRYPT`),信息函数(如 `...