每次微软公司发布新版本SQL Server,肯定会包含对Transact-SQL(T-SQL)功能的增强,SQL Server 2012也不例外。最新更新的T-SQL包括许多新功能和修改元素,扩展了该语言的功能。这许多增强功能基本都可以大致分为两类:专门针对个别数据值的功能和影响整个结果集的功能。 在本系列技巧文章中,我们将研究许多T-SQL新功能(两种类型的都包括),并通过一些例子来展示它们如何使用。
然而要记住,这些讨论只是为了提供对各种语言增强功能的一个概览,我们这里并不会讨论详细的语法规则。 操作数据值 SQL Server 2012包括许多T-SQL变化,影响我们解析、转换……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
每次微软公司发布新版本SQL Server,肯定会包含对Transact-SQL(T-SQL)功能的增强,SQL Server 2012也不例外。最新更新的T-SQL包括许多新功能和修改元素,扩展了该语言的功能。这许多增强功能基本都可以大致分为两类:专门针对个别数据值的功能和影响整个结果集的功能。
在本系列技巧文章中,我们将研究许多T-SQL新功能(两种类型的都包括),并通过一些例子来展示它们如何使用。然而要记住,这些讨论只是为了提供对各种语言增强功能的一个概览,我们这里并不会讨论详细的语法规则。
操作数据值
SQL Server 2012包括许多T-SQL变化,影响我们解析、转换、连接和生成数据值的方式。此外,T-SQL现在还提供让你测试转换的功能,以便在转换可能失败时更好地控制语句逻辑。新的语言功能还提供了根据单个整数构建日期和时间值的方法。那么,接下来就让我们看看该语言的这几种元素如何使用吧。
PARSE 和 TRY_PARSE
“PARSE”函数的功能是把字符串值转换成指定类型,以可以映射到.NET Framework文化环境的格式转换,比如荷兰、波兰、韩国或者泰国。如果没有指定文化环境,SQL Server会使用当前会话关联的语言。
例如:在下面的“SELECT”语句中,“PARSE”函数把字符串转换为“DATE”数据类型,并把结果格式化为“捷克”文化环境形式:
DECLARE @date1 VARCHAR(8); SET @date1 = CONVERT(VARCHAR(8), GETDATE(), 22); SELECT PARSE(@date1 AS DATE USING 'Cs-CZ'); |
该函数在“@date1”变量中转换字符串值,这是通过“GETDATE()”函数获取到的,基于当前日期产生。“AS DATE”关键字指定字符串要转换成“DATE”类型。使用“Cs-Cz”原始表示结果应该被格式化为由“Cs-Cz”代码代表的文化格式,也就是“捷克”。
因为“PARSE”是这种方式的用法,“SELECT”语句返回值是“2012-04-06”(实际日期是2012年6月4日),你可以指定任何其它可用文化,指定后会影响结果输出。例如,下面的例子使用了美国英语格式编码(en-US):
DECLARE @date2 VARCHAR(8); SET @date2 = CONVERT(VARCHAR(8), GETDATE(), 22); SELECT PARSE(@date2 AS DATE USING 'en-US'); |
现在“SELECT”语句返回的日期格式就是“2012-06-04”。要注意月和日与前面例子中的结果正好相反。
在某些情况下,转换会失败,SQL Server会返回错误。例如,下面的例子尝试把字符串值“today”转换为“DATE”数据类型:
DECLARE @date3 VARCHAR(8); SET @date3 = 'today'; SELECT PARSE(@date3 AS DATE USING 'Cs-CZ'); |
因为你不能把字符串转换为“DATE”数据类型,所以这条“SELECT”语句就会报错。但是T-SQL现在支持“TRY_PARSE”函数,顾名思义就是支持我们做转换测试的。在下面的例子中,“SELECT”语句使用“TRY_PARSE ”把“today”转换为“DATE”数据类型:
DECLARE @date4 VARCHAR(8); SET @date4 = 'today'; SELECT TRY_PARSE(@date4 AS DATE USING 'Cs-CZ'); |
该“SELECT”语句现在就不会返回错误了,返回的是“NULL”值。通过在真正做转换之前设定测试条件验证转换是否返回“NULL”值,你可以使用这个逻辑控制你的语句流程。
不过,要注意的是如果转换成功的话“TRY_PARSE”函数输出结果与“PARSE ”函数一样。下面的例子使用“TRY_PARSE”转换一个真实的日期值,而不是像“today”那样的字符串。请看:
DECLARE @date5 VARCHAR(8); SET @date5 = CONVERT(VARCHAR(8), GETDATE(), 22); SELECT TRY_PARSE(@date5 AS DATE USING 'Cs-CZ'); |
正如你所预料的,“SELECT”语句返回值“2012-04-06”,正如你在“PARSE ”函数转换时看到的一样。
翻译
相关推荐
-
SQL Server 2016新变化:内存中OLTP功能大改进
SQL Server 2016的许多功能得到改进,内存中OLTP(in-memory OLTP)也不例外,包括扩展性、性能以及扩展T-SQL用于使用和管理内存优化表的功能方面。
-
升级到SQL Server 2012的七个理由
微软建议尽快将数据库升级到最新版本。在本文中,我们就来列举七个SQL Server 2012的功能特性,它将成为你升级的主要动力。
-
优化T-SQL提升SQL Server数据库性能
本文中提供了八种优化T-SQL代码避免SQL Server数据库性能瓶颈的技巧,我们可以据此优化数据库应用。
-
配置SQL Server数据库恢复模式的两种方法
本文我们讨论了配置SQL Server恢复模式的两种方式,用T-SQL或者SQL Server管理工具都可以修改恢复模式的设置。