博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server 2012 新特性:新增和修改函数
阅读量:6074 次
发布时间:2019-06-20

本文共 2978 字,大约阅读时间需要 9 分钟。

转换函数

     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
,如需转载请自行联系原作者
你可能感兴趣的文章
Java中利用MessageFormat对象实现类似C# string.Format方法格式化
查看>>
Citrix发布新一代远程交付协议,EDT
查看>>
逆思维调用双版本PHP7和5
查看>>
14个坏习惯可能让你丢掉工作
查看>>
unbuntu 修改网卡
查看>>
鸟哥私房菜重温笔记7
查看>>
memset用法详解
查看>>
我的友情链接
查看>>
学习python:练习5.简单红包程序
查看>>
日志轮替简介
查看>>
生成7位不同的随机整数
查看>>
我的友情链接
查看>>
<img src="data:xxx1" style=aaa:'"/onerror=alert(1)//' >
查看>>
zabbix-----2-----监控nginx的状态
查看>>
我的友情链接
查看>>
***学习笔记--场景篇--通过mysql的root账号来get shell
查看>>
mysql之触发器trigger
查看>>
我的友情链接
查看>>
Java中的匿名内部类
查看>>
14.PL_SQL——StoreProcedures的创建和使用
查看>>