SQLServer2012在发展的一些新特点 浏览:828

1。添加序列对象。
这是Oracle用户最熟悉的数据库对象。现在,我们已经在SQL Server中看到了类似的对象,但是用法的语法略有不同,创建语法也是创建序列,当使用它时需要使用下一个值来获得下一个值:

复制代码代码如下所示:
序列{ } { }创建sq_1 dbo。
{ }为bigint
从1开始
增量1;

选择sq_1 } {如使用下一个值;


如果要插入值,则为:

复制代码代码如下所示:
插入到t1(C1,C2)中
值(为sq_1,测试的下一个值);


但是似乎没有提供当前值的语法,所以您必须取下一个值吗

两。新的分页查询语法。
在SQL Server中的分页,第一件事就是用顶部或临时表,然后row_number函数来实现分页。现在最新的sql2012可以分页与秩序,其次是偏取条款。感觉有点像LINQ的语法。例如,20有效的项目信息的1W行查询后,当时的row_number分页查询的SQL:

复制代码代码如下所示:
选择*


SELECT *,row_number()以上(以p.project_id)R
从项目P
在p.is_deleted = 0
x)
其中x r在10001和10020之间有一个新的语法,然后查询语句是:

*选择
从项目P
在p.is_deleted = 0
为了p.project_id
偏移10001行
只取下20行;


显然,当使用新语法时,代码看起来更简洁,表达式更明确。

三。一些新的系统功能。
3.1相当于C #三目运算符IIf函数

这个函数在VBA IIf函数相同,决定第一个参数的表达式为真。它真的返回第二个参数,而false返回第三个参数。

有了这个函数,很多时候我们不能在语法中使用复杂的例子,例如,我们判断项目的大小以显示相应的字符串,然后旧的书写是:

复制代码代码如下所示:
选择时p.code,p.size > 100 then'big'else'small结束size_string
从项目P
如果大小不是null


现在,我们可以简单地写:

复制代码代码如下所示:
选择p.code,IIF(p.size > 100,大的,小的)作为size_string
从项目P
如果大小不是null


3.2连接功能连接在判断型和空字符串

SQL Server最初使用的连接非常简单,直接使用+号,但需要注意两个问题。首先,类型必须是String类型。如果是数字类型,它将报告语法错误,所以我们必须将数字类型转换为字符串。2、如果其中一个值为NULL,整个连接的结果是空字符串,因此也需要判断null。

复制代码代码如下所示:
选择p.project_id,p.code + ',' +器+ ',' +空(p.nick_name,' + '),' + isnull(转换(varchar(50),p.size),)
从项目P


现在使用concat函数,类型是直接忽略,和零的检查是不容忽视的,它是直接连接到一个非空字符串:
复制代码代码如下所示:
选择p.project_id,concat(p.code,',',',',p.nick_name器,,',',p.size)。
From PROJECT p


你显然可以感觉到许多简单。

3.3当字符串转换成字符串时设置格式函数的格式。

在将数字或日期转换成字符串之前,可以使用转换函数以第三个整数的参数来指定转换格式,但这种方法太麻烦了。整数参数不易理解和记忆,而且也不灵活。当前格式的功能相当于字符串。C #和格式,你可以要第二参数格式输出函数。

复制代码代码如下所示:
选择p.project_id,格式(p.created_time,'yyyy-mm-dd),转换(varchar(50),p.created_time,112)
从项目P


3.4让枚举显示一个更方便的选择函数。

枚举值是经常使用的程序,和字段用于数据库存储枚举值。然而,当查看时,不容易理解枚举值的含义。我们必须看看哪1个与代码对应,看看与2对应的是什么。如果你想在显示时显示一个字符串,你需要在判断时使用用例。现在你可以使用选择函数,这使得把枚举转换成字符串很容易。例如,为了显示项目的状态,那么我们的查询是:

复制代码代码如下所示:
选择p.code,选择(p.status,计划,'exec,完整的,'abort ','fail)
从项目P


的选择功能有几个缺点比情况。1,它不支持0和负数。因此,如果枚举值为0,则不能显示该值。2,枚举值必须是连续的和相对较小的,并且不能使用100或200等效。如果选择使用,它必须写死的人。如果没有默认值,当使用情况时,如果没有匹配,有一个可以显示的其他值。如果选择不匹配,那么它是空值。所以我认为这个函数使用得很好。

3.5各种日期和时间函数。

另外一个eomonth函数返回给定日期的最后一天,其他的新功能是通过每年的日期作为参数并返回指定的数据类型的对象,这相当于转换函数的变形。一般使用的不多,并没有太多的介绍。

四,增加了子句,增加了一些分析功能。
以上条款是用来排名的功能如秩和row_number。现在,过度子句已经大大增强,并且可以将过度子句应用到聚合函数中,并且还添加了一些分析功能。

例如,我有一个客户和项目的表,一个项目的客户,现在需要了解客户信息和客户的每个新项目的代码,如果在这之前不好,现在我们有分析功能,您可以使用first_value或last_value的条款,我们希望结果:

复制代码代码如下所示:
选择不同的C *,first_value(p.code)在(由c.client_id秩序由P. { created_time }分区)
从项目P
内部连接客户端C
在p.client_id = c.client_id

推荐文章1
广告