知识大全 SQL Server2012对于开发人员用的上的新特性
Posted 函数
篇首语:要须心地收汗马,孔孟行世目杲杲。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQL Server2012对于开发人员用的上的新特性相关的知识,希望对你有一定的参考价值。
SQL Server2012对于开发人员用的上的新特性 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
SQL Server 已经发布一段时间了 最近在新的机器上安装了最新的SQL Server SP 体检下感觉良好 官方给出了一大堆SQL 相对于SQL R 的新特性 但是大多数对于普通开发人员来说都是浮云 根本用不到 下面就说说一些对于开发人员来说比较有用的新特性
一 增加了Sequence对象
这个对于Oracle用户来说是最熟悉不过的数据库对象了 现在在SQL Server中终于也看到了类似的对象 只是在使用的语法上有一点点不一样 创建语法也是CREATE SEQUENCE 使用的时候需要使用NEXT VALUE FOR来取下一个值
CREATE SEQUENCE [dbo] [SQ_ ]
AS [bigint]
START WITH
INCREMENT BY ;
SELECT NEXT VALUE FOR [SQ_ ] AS FirstUse;
如果要插入一个值 那么就是
INSERT INTO t (c c )
VALUES (NEXT VALUE FOR SQ_ Test ) ;
但是好像没有提供获得当前值的语法 难道必须取下一个值?
二 新的分页查询语法
以前在SQL Server中分页 最早是用top或者临时表 后来出现了ROW_NUMBER函数实现分页 现在最新的SQL 可以在order by子句后跟offset和fetch来分页 感觉有点像是LINQ的语法 比如查询 W行之后的 条有效项目信息 那么ROW_NUMBER分页查询的SQL是
select *
from
(
select * ROW_NUMBER() over(order by p PROJECT_ID) R
from PROJECT p
where p IS_DELETED=
) x
where x R beeen and
而是有了新的语法 那么查询语句就是
SELECT *
FROM PROJECT p
where p IS_DELETED=
ORDER BY p PROJECT_ID
OFFSET ROWS
FETCH NEXT ROWS ONLY;
显然使用了新的语法后代码看起来更简洁 意思表达也更明确 从执行效率上来讲 试了一下 是一样的
三 一些新的系统函数
相当于C#中三目运算符的IIF函数
这个函数和VBA中的IIF函数相同 判断第一个参数的表达式是否为真 真则返回第二个参数 假则返回第三个参数
有了这个函数很多时候我们可以不用再使用复杂的case when语法了 比如我们判断项目的大小以显示对应的字符串 那么老的写法是
select p CODE case when p SIZE> then Big else Small end as SIZE_STRING
from PROJECT p
where SIZE is not null
现在 我们可以简单的写成
select p CODE IIF(p SIZE> Big Small ) as SIZE_STRING
from PROJECT p
where SIZE is not null
不用判断类型和NULL的字符串连接CONCAT函数
SQL Server本来对字符串的连接很简单 直接使用“+”号 但是需要注意两个问题 一是必须类型都是字符串类型 如果是数字类型那么会报语法错误 所以必须把数字类型转换为字符串 二是如果其中的某个值为null 那么整个连接的结果就是一个null字符串 所以还需要判断null 所以本来只是一个连接字符串的查询就会写的很复杂
select p PROJECT_ID p CODE+ +p NAME+ +ISNULL(p NICK_NAME )+ +ISNULL(CONVERT(varchar( ) p SIZE) )
from PROJECT p
现在使用CONCAT函数 直接忽略其中的类型 忽略对NULL的检查 直接连接成一个非空的字符串
select p PROJECT_ID CONCAT( p CODE p NAME p NICK_NAME p SIZE)
from PROJECT p
可以明显感觉到简洁了很多
转换成字符串时设置格式的FORMAT函数
以前要把数字或者日期转换成字符串 可以使用CONVERT函数并带人第三个整数类型的参数指定转换的格式 不过这种方法太麻烦 整数参数不容易理解和记忆 而且也不灵活 现在的FORMAT函数相当于C#中的String Format函数 在第二个参数中可以想要输出的格式
select p PROJECT_ID FORMAT(p CREATED_TIME yyyy MM dd ) CONVERT(varchar( ) p CREATED_TIME )
from PROJECT p
让枚举显示更方便的CHOOSE函数
在程序中经常使用枚举值 在数据库中使用tinyint来保存枚举值 但是在查看时却不是很容易理解枚举值的含义 必须查看代码看 对应什么 对应什么才知道 在显示的时候如果要显示成字符串 那么就需要使用case when进行判断 现在可以使用CHOOSE函数 让枚举转换成字符串变得很简单 比如要显示项目的状态 那么我们的查询就是
select p CODE CHOOSE( p STATUS Plan Exec Complete Abort Fail )
from PROJECT p
CHOSSE函数比case when有几个缺点 是不支持 和负数 所以如果枚举的值是 那么就没办法显示 是枚举值必须连续而且比较小 不能使用 等值 那要是用CHOOSE那得写死人了 没有default值 使用case when的时候 如果不匹配还有个else值可以显示 而使用CHOOSE后如果没有匹配的 那么就是NULL值 所以个人觉得这个函数的使用面非常
各种日期时间函数
除了一个EOMONTH函数是返回给定日期的最后一天外 其他的新函数 都是把年月日作为参数传进去 返回指定数据类型的对象 相当于就是CONVERT函数的变形 总体使用不多 在此不多介绍
四 OVER子句的增强和新增一些分析函数
之前OVER子句是用于RANK ROW_NUMBER等排名函数 现在OVER子句得到了大大的增强 可以将OVER子句应用到聚合函数中 也增加了一些分析函数
比如我有一个项目和客户表 一个客户对于多个项目 现在需要知道客户的信息和每个客户的最新项目Code 这个要是以前还不好实现 现在我们有了分析函数 可以使用FIRST_VALUE或者LAST_VALUE再配合OVER子句 得到我们想要的结果
select distinct c * FIRST_VALUE(p CODE) over(PARTITION BY c CLIENT_ID order by p [CREATED_TIME] desc) as LAST_PROJECT_CODE
from PROJECT p
inner join CLIENT c
cha138/Article/program/SQLServer/201311/22275相关参考
知识大全 如何开启SQL Server2012数据库的远程连接
如何开启SQLServer2012数据库的远程连接 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!l
MSSQLServer性能调整和优化开发人员指南第3部分:配置SQLServer 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容
很多开发人员都想成为一名DBA也有很多人一开始就把自己定位成为一名DBADBA究竟需要掌握些什么知识和技能呢?以下是我做DBA工作和面试DBA时整理的一些DBA方面的三十个问题三十个大问题中还有许多小
SQLServer开发问题前十名[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! SQLSe
SQLServer开发问题前十名[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在SQLS
SQLServer开发问题前十名[5] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为行选择创
SQLServer开发问题前十名[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我编写了一
SQLServer开发问题前十名[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 接下来的字
SQLServer开发10个最重要特点 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! NET框架
知识大全 为 Internet 上的 SQL Server 复制配置 Proxy Server
为Internet上的SQLServer复制配置ProxyServer 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶