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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:

转换函数

     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 () 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






    本文转自 Fanr_Zh 博客园博客,原文链接:http://www.cnblogs.com/Amaranthus/p/5752804.html ,如需转载请自行联系原作者


相关实践学习
使用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
相关文章
|
1月前
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
|
1月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
1月前
|
SQL 数据库 索引
SQL中COUNT函数结合条件使用的技巧与方法
在SQL查询中,COUNT函数是一个非常常用的聚合函数,用于计算表中满足特定条件的记录数
|
1月前
|
SQL 存储 数据库
SQL学习一:ACID四个特性,CURD基本操作,常用关键字,常用聚合函数,五个约束,综合题
这篇文章是关于SQL基础知识的全面介绍,包括ACID特性、CURD操作、常用关键字、聚合函数、约束以及索引的创建和使用,并通过综合题目来巩固学习。
35 1
|
1月前
|
SQL 关系型数据库 MySQL
SQL日期函数
SQL日期函数
|
2月前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
3月前
|
SQL 数据处理 数据库
|
3月前
|
SQL Oracle 关系型数据库
SQL 中的大小写处理函数详解
【8月更文挑战第31天】
148 0
|
3月前
|
SQL 数据采集 数据挖掘
为什么要使用 SQL 函数?详尽分析
【8月更文挑战第31天】
50 0
下一篇
无影云桌面