加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver的2个遗憾、不足

发布时间:2020-12-12 15:44:09 所属栏目:MsSql教程 来源:网络整理
导读:sqlserver是比较好用的了 但是,还是有2个比较不好的地方: 1、存储过程的生成记录集,无法被调用者的sql拿来(截取或调用前就指定一个表变量去承接)使用 2、在sql语句里无法定义临时的函数、存储过程,然后使用它(必须实实在在的建立函数、存储过程,才能

sqlserver是比较好用的了

但是,还是有2个比较不好的地方:

1、存储过程的生成记录集,无法被调用者的sql拿来(截取或调用前就指定一个表变量去承接)使用

2、在sql语句里无法定义临时的函数、存储过程,然后使用它(必须实实在在的建立函数、存储过程,才能使用它们,最后还要删除它们)

?

sql2005增加了varchar(max),功德无量!

但是select top n SKIP m ... from ...始终没有实现SKIP m,实在不爽——虽然rank over(不过好像是sql2005才出现,效率好像也不低)

?

RANK ( )????OVER ( [ < partition_by_clause > ] < order_by_clause > )

如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名。例如,如果两位顶尖销售员具有同样的 SalesYTD 值,他们将并列第一。由于已有两行排名在前,所以具有下一个最大 SalesYTD 的销售人员将排名第三。因此,RANK 函数并不总返回连续整数。

用于整个查询的排序顺序决定了行在结果集中的显示顺序。这也隐含了行在每个分区中的排名。

USE AdventureWorks;
GO
SELECT i.ProductID,p.Name,i.LocationID,i.Quantity,RANK() OVER (PARTITION BY i.LocationID order by i.Quantity) as RANK
FROM Production.ProductInventory i JOIN Production.Product p 
ON i.ProductID = p.ProductID
ORDER BY p.Name
GO
?
还有2个想而没有功能的:
1、对于sql的结果,在不知道字段名的情况下按顺序取
2、对于sql的结果,在不知道某字段名是否存在的情况下,条件选择
(如:如果存在fid则取max(fid)否则取max(第一个字段名))
对于2,如果是固定的表或视图,好像可以通过系统表查到某字段名是否存在
但是如果是一个子查询,则不行
 
再补充:
2014增加了内存表,如果能在超出预定大小时,自动以非固定的内存补充,再不够以硬盘文件补充(也许已经这样了)
sql语法增加并发提交多个查询的功能

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读