SQL Server2012新特性:新增内置函数
来源:互联网 发布:吉林大学网络教育地址 编辑:程序博客网 时间:2024/06/08 10:31
标注为红色的是个人觉得比较有用的几个函数。
序号名称类型说明MSDN1Concat字符串类返回作为串联两个或更多字符串值的结果的字符串。msdn2Format字符串类返回以指定的格式和可选的区域性格式化的值。msdn3CHOOSE逻辑类在 SQL Server 中从值列表返回指定索引处的项。msdn4IIF逻辑类在 SQL Server 中,根据布尔表达式计算为 true 还是 false,返回其中一个值。msdn5DATEFROMPARTS日期类返回日期指定的年、 月和日的值。msdn6DATETIMEFROMPARTS日期类返回datetime值的指定的日期和时间。msdn7DATETIME2FROMPARTS日期类返回datetime2值的指定的日期和时间并使用指定的精度。msdn8DATETIMEOFFSETFROMPARTS日期类返回datetimeoffset值的指定的日期和时间并使用指定的偏移量和精度。msdn9TIMEFROMPARTS日期类返回时间值指定的时间并使用指定的精度。msdn10EOMONTH日期类返回包含指定日期的月份的最后一天(具有可选偏移量)。msdn11PARSE转换类返回 SQL Server 中转换为所请求的数据类型的表达式的结果。msdn12TRY_PARSE转换类
在 SQL Server 中,返回表达式的结果(已转换为请求的数据类型);
如果强制转换失败,则返回 Null。 TRY_PARSE 仅用于从字符串转换为日期/时间和数字类型。
msdn13TRY_CONVERT转换类返回转换为指定数据类型的值(如果转换成功);否则返回 Null。msdnSET NOCOUNT ON--1. CONCAT--concat 的好处:1. 可以跨数据类型; 2. 忽略 NULLSELECT CONCAT ( 'Happy ', 'Birthday ', 11, '/', '25', NULL ) AS r1, 'Happy'+NULL AS r2;/*r1 r2------------------------------ ------Happy Birthday 11/25 NULL*/--2. FORMAT----1. 可以根据区域得到不同的日期格式----2. 可以自定义格式字符串(日期和数字)----3. 可以根据区域得到不同的数据格式(如加 $ )DECLARE @d DATETIME = '10/01/2011'; SELECT FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result' ,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result' ,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result' ,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result'; /*US English ResultGreat Britain English ResultGerman ResultSimplified Chinese (PRC) Result10/1/2011 01/10/2011 01.10.2011 2011/10/1*/ SELECT FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result' ,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result' ,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result' ,FORMAT ( @d, 'D', 'zh-cn' ) AS 'Chinese (Simplified PRC) Result'; /*US English Result Great Britain English ResultGerman Result Chinese (Simplified PRC) ResultSaturday, October 1, 201101 October 2011 Samstag, 1. Oktober 20112011年10月1日*/DECLARE @d2 DATETIME = GETDATE(); SELECT FORMAT( @d2, 'dd/MM/yyyy', 'en-US' ) AS 'DateTime Result' ,FORMAT(123456789,'###-##-####') AS 'Custom Number Result'; /*DateTime ResultCustom Number Result15/12/2017 123-45-6789*/SELECT FORMAT(cast('07:35' as time), N'hh.mm') AS r1,FORMAT(cast('07:35' as time), N'hh\.mm') AS r2,FORMAT(GETDATE(), N'yyyy-MM-dd HH.mm.ss') AS r3,FORMAT(GETDATE(), N'yyyy-MM-dd HH:mm:ss') AS r4/*r1 r2 r3 r4NULL07.352017-12-15 09.43.162017-12-15 09:43:16*/--3. CHOOSE---- 避免了多次的 CASE WHENSELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS r; /*rDeveloper*/--4. IIF---- IIF ( boolean_expression, true_value, false_value ) ---- 快速写CASE WHEN 的方法,最多也只能10层DECLARE @a int = 45, @b int = 40; SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result; /*ResultTRUE*/--5. DATEFROMPARTS----DATEFROMPARTS ( year, month, day ) ----返回日期指定的年、 月和日的值。 返回类型 dateSELECT DATEFROMPARTS ( 2010, 12, 31 ) AS Result; /*Result2010-12-31*/--6. DATETIMEFROMPARTS----DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds ) ----返回datetime值的指定的日期和时间。SELECT DATETIMEFROMPARTS ( 2010, 12, 31, 23, 59, 59, 0 ) AS Result; /*Result2010-12-31 23:59:59.000*/--7. DATETIME2FROMPARTS----DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision ) ----返回datetime2值的指定的日期和时间并使用指定的精度。SELECT DATETIME2FROMPARTS ( 2010, 12, 31, 23, 59, 59, 0, 0 ) AS Result; /*Result2010-12-31 23:59:59*/--8. DATETIMEOFFSETFROMPARTS ----DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision ) ----返回datetimeoffset值的指定的日期和时间并使用指定的偏移量和精度。SELECT DATETIMEOFFSETFROMPARTS ( 2010, 12, 31, 14, 23, 23, 0, 12, 0, 7 ) AS Result; /*Result2010-12-31 14:23:23.0000000 +12:00*/--9. TIMEFROMPARTS ----TIMEFROMPARTS ( hour, minute, seconds, fractions, precision ) ----返回时间值指定的时间并使用指定的精度。SELECT TIMEFROMPARTS ( 23, 59, 59, 0, 0 ) AS Result; /*Result23:59:59*/--10. EOMONTH ----EOMONTH ( start_date [, month_to_add ] ) ----tart_date 日期表达式,指定要为其返回该月的最后一天的日期。----month_to_add 指定要添加的月数的可选整数表达式start_date。----返回包含指定日期的月份的最后一天(具有可选偏移量)。 返回类型 dateDECLARE @date DATETIME = '12/1/2011'; SELECT EOMONTH ( @date ) AS Result,EOMONTH ( @date,-3 ) AS Result2; /*Result Result22011-12-312011-09-30*/--11. PARSE----PARSE ( string_value AS data_type [ USING culture ] ) ----返回 SQL Server 中转换为所请求的数据类型的表达式的结果。------A. PARSE 为 datetime2SELECT PARSE('Monday, 13 December 2010' AS datetime2 USING 'en-US') AS Result; /*Result --------------- 2010-12-13 00:00:00.0000000 */--B. PARSE 与货币符号SELECT PARSE('€345,98' AS money USING 'de-DE') AS Result;/* Result --------------- 345.98 */--C. 使用隐式设置的语言进行 PARSE-- The English language is mapped to en-US specific culture SET LANGUAGE 'English'; SELECT PARSE('12/16/2010' AS datetime2) AS Result; /*Result2010-12-16 00:00:00.0000000*/--12. TRY_PARSE----TRY_PARSE ( string_value AS data_type [ USING culture ] ) ----在 SQL Server 中,返回表达式的结果(已转换为请求的数据类型);如果强制转换失败,则返回 Null。 TRY_PARSE 仅用于从字符串转换为日期/时间和数字类型。------A. TRY_PARSE 的简单示例SELECT TRY_PARSE('Jabberwokkie' AS datetime2 USING 'en-US') AS Result; /*Result --------------- NULL */--B. 检测 TRY_PARSE 的 Null 值SELECT CASE WHEN TRY_PARSE('Aragorn' AS decimal USING 'sr-Latn-CS') IS NULL THEN 'True' ELSE 'False' END AS Result; /*Result --------------- True */--C. 将 IIF 用于 TRY_PARSE 和隐式区域性设置SET LANGUAGE English; SELECT IIF(TRY_PARSE('01/01/2011' AS datetime2) IS NULL, 'True', 'False') AS Result,TRY_PARSE('01/01/2011' AS datetime2) AS r2; /*Resultr2False2011-01-01 00:00:00.0000000*/--13. TRY_CONVERT----TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] ) ----返回转换为指定数据类型的值(如果转换成功);否则返回 Null。--A. TRY_CONVERT 返回 nullSELECT CASE WHEN TRY_CONVERT(float, 'test') IS NULL THEN 'Cast failed' ELSE 'Cast succeeded' END AS Result; /* 复制Result ------------ Cast failed */--以下示例演示表达式必须采用所需的格式。SET DATEFORMAT dmy; SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result; GO /*Result ---------------------- NULL */--B. TRY_CONVERT 将失败,并出现错误--下面的示例演示明确不允许转换时 TRY_CONVERT 返回错误。SELECT TRY_CONVERT(xml, 4) AS Result; /*--此语句的结果是一个错误,因为整数无法转换为 xml 数据类型。Explicit conversion from data type int to xml is not allowed. */--C. TRY_CONVERT 成功--此示例演示表达式必须采用所需的格式。SET DATEFORMAT mdy; SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result; /*Result ---------------------------------- 2010-12-31 00:00:00.0000000 */
阅读全文
0 0
- SQL Server2012新特性:新增内置函数
- SQL SERVER2012 新增的14个内置函数
- SQL Server2012 新特性: THROW
- SQL Server2012新特性WITH RESULT SETS
- SQL Server2012新特性: 包含数据库
- SQL Server2012新特性:OFFSET, FETCH 分页
- SQL Server 2012新增内置函数
- SQL Server 2012可编程性新特性_6_14个新的内置函数
- SQL SERVER2012新分页方式
- SQL SERVER2012新分页方式
- SQL SERVER2012新分页方式
- [MSSQL]SQL Server2012在程序开发中实用的一些新特性
- SQL Server2012在程序开发中实用的一些新特性
- SQL Server 2012新增的内置函数尝试
- SQL SERVER2012新功能之新分页语法
- SQL 2005 新增特性
- Java8新特性_四大内置核心函数式接口
- Java8新特性(内置的核心函数式接口)
- 超简单方式教你打造原生侧滑菜单
- python_fullstack基础(一)
- 糗事百科爬虫用户统计
- 数据结构实验之排序二:交换排序
- C语言单向链表的实现
- SQL Server2012新特性:新增内置函数
- js的原型链
- linux学习第三十六篇:MariaDB安装,Apache安装
- HTTP与HTTPS的区别
- ptyhon数据类型及循环结构
- iOS进阶——数据处理之文件读写
- TabLayout/ViewPager/Fragment结合使用
- SQL INSERT INTO
- 深入理解DOM事件类型系列第八篇——变动事件