加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 大数据 > 正文

SQL系列技巧之数据值的关键

发布时间:2021-07-18 07:33:03 所属栏目:大数据 来源:互联网
导读:每次微软公司发布新版本SQL Server,肯定会包含对Transact-SQL(T-SQL)功能的增强,SQL Server 2012也不例外。最新更新的T-SQL包括许多新功能和修改元素,扩展了该语言的功能。这许多增强功能基本都可以大致分为两类:专门针对个别数据值的功能和影响整个

    每次微软公司发布新版本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”.要注意月和日与前面例子中的结果正好相反。[page]

    在某些情况下,转换会失败,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 ”函数转换时看到的一样。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读