SqlServer2008实例44类型转换

    CONVERT和CAST函数都是用来将一种数据类型转换为另一种数据类型。CAST的语法如下所示:
    CAST(expression AS data_type[(length)])
    第一个参数是要转换的表达式(例如一个表列或字面量值)。第二个参数是要转换成的数据类型。
    CONVERT的语法如下:
    CONVERT(data_type[(length)],expression[,style】)
    第一个参数是要转换成的数据类型。第二个参数是需要转换的表达式。第三个参数style允许配置某个日期呈现的格式.使用CAST函数时不可以使用第三个参数。
1.转换数据类型

示例1:使用CONVERT来将整数值变为字符数据类型:

SELECT CONVERT(char(4),2008) + ' Can be concatenated'

示例2:使用CAST进行相同类型的转换:

USE AdventureWorks
GO

SELECT EmployeeID,CAST(SickLeaveHours AS CHAR(4)) +
       'Sick Leave Hours Left' SickTime
FROM HumanResources.Employee

2.将日期转换为文本形式

    CONVERT有一个可选的样式参数,可以用它将datetime或srnalldatetlme转换为指定的字符格式。许多人很疑惑日期和时间是如何存储,以和查询结果中实际的日期表示相符的。使用样式参数的时候,请记住你所做的只会影响日期的字符表现方式,而不会影响它的存储方式(当然,除非使用非datetime数据类型列存储要表现的日期)。
                        COfWERT样式格式

样式代码格  式
101mm/dd/yyyy
102yy.mm.dd
103dd/mm/yy
108hh:mm:ss
110mm-dd-yy
112yymmdd

示例1:返回当天的日期格式

SELECT CONVERT(varchar(20),GETDATE(),101)

示例2:转换datetime值为字符值,然后重新把它转换为datetime数据类型:

SELECT CONVERT(datetime,CONVERT(varchar(11),'2008-08-13 20:37:22.570',101))

示例3: 在SQL Servcr 2008中,不需要存储时间时,你完全可以进行如下从datetlme到date数  据类型的转换:

SELECT CONVERT(date,'2008-08-13 20:37:22.570')

3.以字符串字面量表示二进制数据

    SQL Server 2008引入了以字符串十六进制字面量格式返回二进制数据的新方法。CONVERT命令允许3个二进制样式:0、1和2。
    二进制样式0将二进制字节转换为ASCII字符,将ASCII字符转换为二进制字节。这是SQL Server早期版本的行为。

    示例1:演示二进制样式0:

SELECT CONVERT(char(29),0x53514C20536572766572203230303820542D53514C2052656369706573,
0) ReturnValue 

示例2:通过将ASCII转换为varbinary将之前的示例反转:

SELECT CONVERT(varbinary,'SQL Server 2008 T-SQL Recipes',0) ReturnValue 

3.    使用SQL Server 2008带来的新功能,二进制样式l和2用来将二进制字节转化为表示十六进制值的字符串表达式。样式1是以0x为前缀的值,样式2无此前缀。如下的查询演示了样式1:

SELECT CONVERT(char(60),0x53514C20536572766572203230303820542D53514C2052656369706573,1)
       ReturnValue_Style_1

演示样式2:

SELECT CONVERT(char(60),0x53514C20536572766572203230303820542D53514C2052656369706573,2)
       ReturnValue_Style_2

4.计算表达式返回的数据类型

    当转换数据类型的时候,有时候知道SQL Server认为一个表达式是什么数据类型是很有用的。

     示例:使用ISDATE和ISNUMERIC函数来检测表达式的数据类型:  

--返回0
SELECT ISDATE('1/1/20000')
--返回1
SELECT ISDATE('1/1/2008')
--返回2
SELECT ISDATE('123ABC')
--返回3
SELECT ISDATE('123')

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页