zoukankan      html  css  js  c++  java
  • SQL Server 2012 新特性:新增和修改函数

    转换函数

         1.PARSE
         Parse是把字符串类型转化为想要的类型,看看和convert和cast的区别
         
     
    SELECT PARSE ('2.111111' AS float ),CAST ('2.111111111111' AS FLOAT)
    ---------------------- ----------------------
    2.111111               2.111111111111
     
    (1 row (s ) affected )
     
    SELECT PARSE ('19010101' AS DATETIME ),CAST ('19010101' AS DATETIME)
     
    Msg 9819, Level 16, State 1, Line 63
    Error converting string value '19010101' into data type datetime using culture ''.
     
    SELECT PARSE ('1901-01-01' AS DATETIME ),CAST ('1901-01-01' AS DATETIME)
     
    ----------------------- -----------------------
    1901-01-01 00:00:00.000 1901-01-01 00:00:00.000
     
    (1 row (s ) affected )     
     
    新功能转日期的时候格式一定要注意,不然转不过去,没有cast好用。
     
         2.TRY_CONVERT
         TRY_CONVERT,如果转化成功返回值,转化不成功返回null,比 convert转化不成功报错,编程更加简单和方便些。
         比如:
             
       SELECT   CASE WHEN TRY_CONVERT(float, 'test') IS NULL 
        THEN 'Cast failed'
        ELSE 'Cast succeeded'
    END AS Result;
    GO
         
         3.TRY_PASSE
         和上面的类似,只是不成功返回null。
    SELECT TRY_PARSE ('19010101' AS DATETIME ),CAST ('19010101' AS DATETIME)
     
    ----------------------- -----------------------
    NULL                    1901 -01 -01 00 :00 :00.000     
              
    日期和时间函数
         1.DATEFROMPARTS
         通过传入年月日参数拼出一个日期,以前使用字符串拼接然后再转化成日期
    SELECT
    DATEFROMPARTS ( 2010, 12, 31 ),CAST ('20101231' AS date)
    ---------- ----------
    2010-12-31 2010-12-31
         
         2.DATETIME2FROMPARTS
         和上面类似,但是多了时分秒和精度。
    SELECT DATETIME2FROMPARTS ( 2011, 8, 15, 14, 23, 44, 5, 1 ), DATETIME2FROMPARTS ( 2011, 8, 15, 14, 23, 44, 50, 2 ), DATETIME2FROMPARTS ( 2011, 8, 15, 14, 23, 44, 500, 3 );
    GO
    --------------------------- --------------------------- ---------------------------
    2011-08-15 14:23:44.5       2011 -08 -15 14 :23 :44.50      2011 -08 -15 14 :23 :44.500
         3.DATATIMEFROMPARTS     
         和上面基本没有区别,只是没有了精度
    SELECT DATETIMEFROMPARTS ( 2010, 12, 31, 23, 59, 59, 0 ) ;
    -----------------------
    2010-12-31 23:59:59.000
         
         4.DATATIMEOFFSETFROMPARTS
         相比上面多了时区设置。返回datatimeoffset类型
         
         5.EOMONTH
         计算月的最后一天,有了这个就很方便,在编写月报或者什么的时候。
    DECLARE @date DATETIME = GETDATE ();
    SELECT EOMONTH ( @date ) AS 'This Month', EOMONTH ( @date, 1 ) AS 'Next Month',EOMONTH ( @date , -1 ) AS 'Last Month';
    GO
    This Month Next Month Last Month
    ---------- ---------- ----------
    2016-08-31 2016-09-30 2016-07-31
         6.SMALLDATATIMEFROMPARTS
         SMALLDATATIME类型在sql server中精度到分钟位置。和上面的函数一样的效果。
     
    逻辑函数
         1.CHOOSE
         返回列表中的索引值。如果不能传入参数,或者不能解析逗号分隔字符串,所实话没啥用有点鸡肋
    SELECT CHOOSE ( 3, 'Manager', 'Director' , 'Developer', 'Tester' )
    ---------
    Developer
         
         2.IIF
         根据表达式返回值,返回某个值。应该是case when 的简化版
         
    SELECT IIF ( (SELECT COUNT( 1) FROM dbo. t1)>= 1, (SELECT COUNT (1 ) FROM dbo .t1 ), 0 )
    -----------
    1
     
    字符串函数
         1.CONCAT
         用处和mysql的concat一样用来连接字符串。
    SELECT CONCAT ( 'Happy ', 'Birthday ' , 11 , '/', '25' )
    ------------------------------
    Happy Birthday 11/25
         
         2.FORMAT
         用来返回指定区域的的文本,比如时间。
    DECLARE @d DATETIME = '10/01/2011' ;
    SELECT FORMAT ( @d , 'D', 'en-US' ) AS 'US English Result'
    US English Result
    ---------------------------
    Saturday, October 1 , 2011
     
  • 相关阅读:
    【SQL】oralce中使用group by和case when按照条件求和
    【SQL】ORACLE在sqlplus中使用spool方式生成建表语句
    【SQL】将特定的元素按照自己所需的位置排序
    【LeetCode刷题】SQL-Second Highest Salary 及扩展以及Oracle中的用法
    【LeetCode刷题】SQL-Combine Two Tables
    CSDN无故封我账号,转战博客园。
    Visual Studio 代码管理器svn插件下载
    Geoserver的跨域问题
    Jmeter+Ant+jenkins实现api自动化测试的持续集成
    python编程中的并发------多线程threading模块
  • 原文地址:https://www.cnblogs.com/Amaranthus/p/5752804.html
Copyright © 2011-2022 走看看