SQL Server 2012 新特性:新增和修改函数

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 转换函数      1.PARSE      Parse是把字符串类型转化为想要的类型,看看和convert和cast的区别         SELECT PARSE ('2.111111' AS float ),CAST ('2.

转换函数

     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语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
存储 SQL 数据库
sql server操作案例2
sql server操作案例2
101 0
|
SQL 数据库 Windows
SQL Server 即时文件初始化
原文:SQL Server 即时文件初始化 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 基础知识(Rudimentary Knowledge) 实现过程(Process) 疑问(Questions) 参考文献(References) 二.
1197 0