分享 SQL2012的一些新函数

天-笑 2013-06-28 02:19:27
加精


--新分页方法(效率较高)
select * from sys.columns order by object_id offset 5 rows fetch next 3 rows only
--可创建类似Oracle 的Sequence 序列便于多表共用一个序列
create sequence sid as int start with 1 increment by 1 MaxValue 10 /*序列最大值*/ MinValue -2 /*序列最小值*/ Cycle /*可循环*/
--序列修改(步长居然可以为负数)
alter sequence sid restart with 3 increment by -1
--获取序列值 如何获取当前值??
declare @i int
select @i = next value for sid
print @i
--字符串连接函数测试(任意长度,任意类型)
select concat('SqlServer',2012,null,'Enterprise',getdate())
--新增选择函数第一个参数从开始
select choose(0, '1','2','3','4')
select choose(3, '1','2','3','4')
--新增判断函数
select iif(1>2 ,'1',getdate())
--新增月计算函数
select EOMONTH(getdate()) as '本月最后一天'
select EOMONTH(getdate(),1) as '下月最后一天'
select EOMONTH(getdate(),-1) as '上月最后一天'
--新增类型转换函数Parse Try_Convert Try_Parse
select TRY_CONVERT(float,'test') -- 转换不出,返回null
select TRY_CONVERT(float,'1')
select Try_Parse('test' as datetime)
select Try_Parse('2012-04-01' as datetime)
--比较有用的分析函数LAG(错位比较) 同时可进行分区错位比较
--下例数介绍如何时候column_id 前后两行数据相减,取代错位连接的麻烦
select lag(column_id,1,0) over (PARTITION BY object_id order by object_id,column_id)
from sys.columns
--错位连接(取代RowNumber 函数错位连接)
select object_id,column_id,LEAD(column_id,1,0) over (PARTITION BY object_id order by object_id,column_id) as NextColums
from sys.columns


...全文
9225 121 打赏 收藏 转发到动态 举报
写回复
用AI写文章
121 条回复
切换为时间正序
请发表友善的回复…
发表回复
墙头上乘凉 2015-11-17
  • 打赏
  • 举报
回复
SQL Server2012还有什么方法可以获取序列值
limitstar 2015-09-24
  • 打赏
  • 举报
回复
楼主理解的够深刻,谢谢分享
江南雪_158 2015-08-20
  • 打赏
  • 举报
回复
好东西值得学习
Neo_whl 2014-02-13
  • 打赏
  • 举报
回复
[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/05飘过
dralion 2013-10-16
  • 打赏
  • 举报
回复
oJustsos0 2013-10-07
  • 打赏
  • 举报
回复
好帖!学习了
pensheng 2013-09-25
  • 打赏
  • 举报
回复
建议把执行结果一起贴出来,让大家更直观!
guguda2008 2013-09-18
  • 打赏
  • 举报
回复
关于OFFSET,之前测过读取数比ROW_NUMBER和TOP分页大幅下降,是结果集中的处理,和前面两种方式有本质区别 2012的新函数还是蛮有用的,对我来说,TRY_CONVERT的异常处理大大简化了一些历史数据的处理流程,之前为了找无法转换的数据花费了不少的精力 IIF还是有用的,写法简单,不必再写CASE WHEN了 月份处理函数也是把之前要写的自定义函数或者一堆函数堆砌的方法取代了 字符串连接函数也是一样,之前在拼字符串时要做一堆预处理,比如ISNULL,比如CONVERT CHOOSE暂时想不出大用,可能在列动态选择的时候有亮点吧 LEAD和LAG对爱用游标的同学来说是一个福音,对抑制游标的同学来说也是一个福音,可以方便的完成很多原来游标承担的工作,或者是多个连接承担的工作。 SEQUENCE这个应该是抄ORACLE的吧,对于习惯了IDENTITY的同学来说还需要一部分时间熟悉,用熟了还是很爽的
北极海hein 2013-09-17
  • 打赏
  • 举报
回复
飘过看到了。
KeepSayingNo 2013-09-17
  • 打赏
  • 举报
回复
感谢楼主哦,支持
小孩快跑 2013-09-17
  • 打赏
  • 举报
回复
没用过2012的飘过!
u010559646 2013-07-24
  • 打赏
  • 举报
回复
好东西
qgfudi 2013-07-16
  • 打赏
  • 举报
回复
好好学习,天天向上!
任岽菊 2013-07-16
  • 打赏
  • 举报
回复
不错不错。。。。。。。很有用的这些函数
hupingjie 2013-07-15
  • 打赏
  • 举报
回复
灰常感谢·。。。了
  • 打赏
  • 举报
回复
Marked , 供以后查看
garygxw 2013-07-15
  • 打赏
  • 举报
回复
sinomac 2013-07-14
  • 打赏
  • 举报
回复
新技术,值得围观和学习
FoolRabbit 2013-07-11
  • 打赏
  • 举报
回复
确实,学习到了
游荡人 2013-07-10
  • 打赏
  • 举报
回复
看来我得好好重新学习了,好多东西都丢了
加载更多回复(84)

6,129

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 新技术前沿
社区管理员
  • 新技术前沿社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧