一区二区三区在线视频播放_一区在线播放视频_欧美.com_亚洲精品无人区_久久亚洲精品视频_国产精品久久久久久久免费软件_久久av一区二区三区_欧美国产日韩精品免费观看_亚洲一区自拍_91久久国产精品91久久性色_亚洲一区二区三区在线播放_久久久久久久一区_国产精品一区二区久久久_精品成人国产_亚洲欧洲精品一区二区三区波多野1战4_在线观看亚洲精品

綠色資源網:您身邊最放心的安全下載站! 最新軟件|熱門排行|軟件分類|軟件專題|廠商大全

綠色資源網

技術教程
您的位置:首頁數據庫類SQL Server → SQL Server2012對于開發人員用的上的新特性

SQL Server2012對于開發人員用的上的新特性

我要評論 2013/04/01 18:40:36 來源:綠色資源網 編輯:www.makmong.com [ ] 評論:0 點擊:277次

SQL Server 2012已經發布一段時間了,最近在新的機器上安裝了最新的SQL Server 2012 SP1,體檢下感覺良好。官方給出了一大堆SQL2012相對于SQL2008R2的新特性,但是大多數對于普通開發人員來說都是浮云,根本用不到,下面就說說一些對于開發人員來說比較有用的新特性。

一、增加了Sequence對象:

這個對于Oracle用戶來說是最熟悉不過的數據庫對象了,現在在SQL Server中終于也看到了類似的對象,只是在使用的語法上有一點點不一樣。創建語法也是CREATE SEQUENCE,使用的時候需要使用NEXT VALUE FOR來取下一個值:

CREATE SEQUENCE [dbo].[SQ_1] 
 AS [bigint]
 START WITH 1
 INCREMENT BY 1;

SELECT NEXT VALUE FOR [SQ_1] AS FirstUse;

如果要插入一個值,那么就是:

INSERT INTO t1(c1,c2)
VALUES (NEXT VALUE FOR SQ_1, 'Test') ;

但是好像沒有提供獲得當前值的語法,難道必須取下一個值?

二、新的分頁查詢語法:

以前在SQL Server中分頁,最早是用top或者臨時表,后來出現了ROW_NUMBER函數實現分頁,現在最新的SQL2012可以在order by子句后跟offset和fetch來分頁,感覺有點像是LINQ的語法。比如查詢1W行之后的20條有效項目信息,那么ROW_NUMBER分頁查詢的SQL是:

select  *
from
(
select *,ROW_NUMBER() over(order by p.PROJECT_ID) R
from PROJECT p
where p.IS_DELETED=0 
) x
where x.R  between 10001 and 10020

而是有了新的語法,那么查詢語句就是:

SELECT *
FROM PROJECT p
where p.IS_DELETED=0
ORDER BY p.PROJECT_ID 
OFFSET 10001 ROWS
FETCH NEXT 20 ROWS ONLY;

顯然使用了新的語法后代碼看起來更簡潔,意思表達也更明確。從執行效率上來講,試了一下,是一樣的。

三、一些新的系統函數:

3.1相當于C#中三目運算符的IIF函數

這個函數和VBA中的IIF函數相同,判斷第一個參數的表達式是否為真,真則返回第二個參數,假則返回第三個參數。

有了這個函數很多時候我們可以不用再使用復雜的case when語法了。比如我們判斷項目的大小以顯示對應的字符串,那么老的寫法是:

select p.CODE,case when p.SIZE>100 then 'Big' else 'Small' end as SIZE_STRING
from PROJECT p
where SIZE is not null

現在,我們可以簡單的寫成:

select p.CODE,IIF(p.SIZE>100,'Big','Small') as SIZE_STRING
from PROJECT p
where SIZE is not null

3.2不用判斷類型和NULL的字符串連接CONCAT函數

SQL Server本來對字符串的連接很簡單,直接使用“+”號,但是需要注意兩個問題,一是必須類型都是字符串類型,如果是數字類型那么會報語法錯誤,所以必須把數字類型轉換為字符串。二是如果其中的某個值為null,那么整個連接的結果就是一個null字符串,所以還需要判斷null,所以本來只是一個連接字符串的查詢就會寫的很復雜:

select p.PROJECT_ID, p.CODE+','+p.NAME+','+ISNULL(p.NICK_NAME,'')+','+ISNULL(CONVERT(varchar(50),p.SIZE),'')
from PROJECT p

現在使用CONCAT函數,直接忽略其中的類型,忽略對NULL的檢查,直接連接成一個非空的字符串:

select p.PROJECT_ID,CONCAT( p.CODE,',',p.NAME,',',p.NICK_NAME,',',p.SIZE)
from PROJECT p

可以明顯感覺到簡潔了很多。

3.3轉換成字符串時設置格式的FORMAT函數。

以前要把數字或者日期轉換成字符串,可以使用CONVERT函數并帶人第三個整數類型的參數指定轉換的格式,不過這種方法太麻煩,整數參數不容易理解和記憶,而且也不靈活?,F在的FORMAT函數相當于C#中的String.Format函數,在第二個參數中可以想要輸出的格式。

select p.PROJECT_ID,FORMAT(p.CREATED_TIME,'yyyy-MM-dd'),CONVERT(varchar(50),p.CREATED_TIME,112)
from PROJECT p

3.4讓枚舉顯示更方便的CHOOSE函數。

在程序中經常使用枚舉值,在數據庫中使用tinyint來保存枚舉值,但是在查看時卻不是很容易理解枚舉值的含義,必須查看代碼看1對應什么,2對應什么才知道。在顯示的時候如果要顯示成字符串,那么就需要使用case when進行判斷。現在可以使用CHOOSE函數,讓枚舉轉換成字符串變得很簡單。比如要顯示項目的狀態,那么我們的查詢就是:

select p.CODE,CHOOSE( p.STATUS,'Plan','Exec','Complete','Abort','Fail')
from PROJECT p

CHOSSE函數比case when有幾個缺點,1是不支持0和負數,所以如果枚舉的值是0那么就沒辦法顯示,2是枚舉值必須連續而且比較小,不能使用100、200等值,那要是用CHOOSE那得寫死人了。沒有default值,使用case when的時候,如果不匹配還有個else值可以顯示,而使用CHOOSE后如果沒有匹配的,那么就是NULL值。所以個人覺得這個函數的使用面非常

3.5各種日期時間函數。

除了一個EOMONTH函數是返回給定日期的最后一天外,其他的新函數,都是把年月日作為參數傳進去,返回指定數據類型的對象,相當于就是CONVERT函數的變形??傮w使用不多,在此不多介紹。

四、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
on p.CLIENT_ID=c.CLIENT_ID

關鍵詞:SQL

閱讀本文后您有什么感想? 已有 人給出評價!

  • 0 歡迎喜歡
  • 0 白癡
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙視
一区二区三区在线视频播放_一区在线播放视频_欧美.com_亚洲精品无人区_久久亚洲精品视频_国产精品久久久久久久免费软件_久久av一区二区三区_欧美国产日韩精品免费观看_亚洲一区自拍_91久久国产精品91久久性色_亚洲一区二区三区在线播放_久久久久久久一区_国产精品一区二区久久久_精品成人国产_亚洲欧洲精品一区二区三区波多野1战4_在线观看亚洲精品
国产日韩欧美一区二区三区四区| 亚洲福利视频一区| 麻豆精品在线视频| 亚洲午夜精品福利| 亚洲系列中文字幕| 老妇喷水一区二区三区| 国产精品久久中文| 国产精品久久久久999| 国产亚洲精品资源在线26u| 国产精品久久久久999| 激情欧美日韩一区| 一本色道久久综合狠狠躁篇怎么玩| 亚洲午夜伦理| 亚洲国产精品99久久久久久久久| 欧美成人精品| 久久免费少妇高潮久久精品99| 欧美日本成人| 亚洲高清视频的网址| 国产精品国产三级国产普通话三级| 日韩亚洲欧美精品| 美日韩精品免费观看视频| 久久综合网色—综合色88| 亚洲午夜激情网页| 欧美日韩国产麻豆| 欧美精品福利在线| 99www免费人成精品| 久久久久久亚洲精品杨幂换脸| 久久香蕉国产线看观看网| 久久影视精品| 99视频精品免费观看| 亚洲一区二区高清视频| 亚洲国产日韩欧美在线图片| 美国十次成人| 亚洲丰满在线| 欧美激情综合在线| 欧美一区二区三区四区高清| 国产麻豆午夜三级精品| 欧美精选午夜久久久乱码6080| 欧美xxx在线观看| 亚洲男女毛片无遮挡| 国产尤物精品| 欧美精品手机在线| 亚洲成色精品| 久久久综合视频| 狂野欧美一区| 久久亚洲不卡| 欧美日韩一区二区三区高清| 国产精品成人在线| 亚洲乱码国产乱码精品精98午夜| 国产精品理论片在线观看| 欧美视频不卡| av成人老司机| 国产欧美一区二区三区国产幕精品| 韩国欧美一区| 亚洲国产va精品久久久不卡综合| 国产精品盗摄一区二区三区| 国产日韩视频一区二区三区| 欧美在线免费播放| 国产日韩精品入口| 免费91麻豆精品国产自产在线观看| 黄色资源网久久资源365| 亚洲精品久久视频| 一本一本大道香蕉久在线精品| 中文亚洲视频在线| 欧美在线日韩| 国产亚洲精久久久久久| 欧美视频不卡| 欧美日韩一区在线观看| 亚洲大片一区二区三区| 欧美成人一区二区三区在线观看| 欧美日韩国产成人在线| 国产精品网站在线观看| 99精品国产福利在线观看免费| 欧美一区二区三区男人的天堂| 欧美日韩精品一区视频| 欧美日韩综合久久| 亚洲精品视频免费在线观看| 久久精品国产综合| 午夜精品视频在线观看一区二区| 国产精品毛片在线看| 欧美激情一区二区| 亚洲激情六月丁香| 韩国成人精品a∨在线观看| 一区二区三区视频在线看| 国产精品美女诱惑| 欧美日产国产成人免费图片| 国产精品午夜电影| 久久免费精品日本久久中文字幕| 亚洲国产女人aaa毛片在线| 亚洲久久一区| 亚洲国产精品成人va在线观看| 欧美日韩国产三级| 国产欧美日韩另类一区| 国产精品久久久久久影院8一贰佰| 亚洲第一天堂av| 亚洲曰本av电影| 国产欧美日韩在线观看| 亚洲网站视频| 亚洲国产精彩中文乱码av在线播放| 国产精品igao视频网网址不卡日韩| av成人福利| 国产在线国偷精品产拍免费yy| 欧美日韩视频在线一区二区| 久久男人资源视频| 欧美中文字幕在线观看| 亚洲性线免费观看视频成熟| 国语对白精品一区二区| 在线日本高清免费不卡| 日韩一级视频免费观看在线| 蜜桃av一区二区| 欧美一激情一区二区三区| 欧美日韩在线视频一区| 欧美丰满高潮xxxx喷水动漫| 99国产一区| 在线观看日产精品| 国产精品视频你懂的| 欧美高清你懂得| 久久综合久色欧美综合狠狠| 99re视频这里只有精品| 欧美午夜精品久久久久久超碰| 久久精品一区二区三区四区| 亚洲视频在线观看一区| 久久综合九色综合久99| 久久亚洲私人国产精品va媚药| 久久久久久久综合狠狠综合| 国产精品福利久久久| 国产精品福利av| 欧美精品免费看| 国产日韩精品一区二区| 国产色婷婷国产综合在线理论片a| 欧美视频免费在线观看| 久久久亚洲国产天美传媒修理工| 国产精品一页| 美女精品在线| 亚洲国产免费| 在线成人激情黄色| 一本色道久久综合亚洲精品不卡| 欧美精品粉嫩高潮一区二区| 国产亚洲综合性久久久影院| 99在线视频精品| 黄色成人av在线| 亚洲国产精品999| 久久综合久久综合九色| 中文国产成人精品久久一| 亚洲国产精品一区二区www在线| 欧美日韩在线第一页| 欧美激情影音先锋| 国产欧美视频一区二区| 欧美在线一二三四区| 国产综合色在线| 国产精品久久久久久久久借妻| 久久精品国产精品亚洲综合| 亚洲摸下面视频| 国产精品一区二区三区观看| 亚洲欧洲精品一区二区三区不卡| 久久久久久久一区二区三区| 久久综合中文字幕| 最新亚洲电影| 狠狠色丁香婷婷综合影院| 久久久中精品2020中文| 国产精品国产三级国产aⅴ无密码| 日韩视频在线观看| 久久成人精品电影| 在线欧美一区|