SQL Server 2012 T-SQL系列技巧之数据值的乐趣

日期: 2012-08-12 作者:Robert Sheldon翻译:冯昀晖 来源:TechTarget中国 英文

每次微软公司发布新版本SQL Server,肯定会包含对Transact-SQL(T-SQL)功能的增强,SQL Server 2012也不例外。最新更新的T-SQL包括许多新功能和修改元素,扩展了该语言的功能。这许多增强功能基本都可以大致分为两类:专门针对个别数据值的功能和影响整个结果集的功能。   在本系列技巧文章中,我们将研究许多T-SQL新功能(两种类型的都包括),并通过一些例子来展示它们如何使用。

然而要记住,这些讨论只是为了提供对各种语言增强功能的一个概览,我们这里并不会讨论详细的语法规则。   操作数据值   SQL Server 2012包括许多T-SQL变化,影响我们解析、转换……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

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 ”函数转换时看到的一样。

作者

Robert Sheldon
Robert Sheldon

自由技术撰稿人和技术咨询专家,曾出版和发布若干本书籍、文章和培训教材,重点关注Windows、数据库、商务智能等。

相关推荐