SQLServer——MASTER..spt_values

SQLServer——MASTER..spt_values,第1张

概述常常见到这个表,人家用得天花乱坠的。 自己select一看却莫名其妙的。 花点时间学下吧。 如上, 这个表主要用来保存一些枚举值, 据说是从sybase继承过来,许多函数和存储过程可以看到它的身影。也可以叫系统常量表吧。 里面的东西比较多, 但最常用的是: --0~2047 共2048个数字SELECT number FROM MASTER..spt_values WHERE TYPE = '

常常见到这个表,人家用得天花乱坠的。 自己select一看却莫名其妙的。 花点时间学下吧。


如上, 这个表主要用来保存一些枚举值, 据说是从sybase继承过来,许多函数和存储过程可以看到它的身影。也可以叫系统常量表吧。

里面的东西比较多, 但最常用的是:

--0~2047 共2048个数字SELECT number FROM MASTER..spt_values WHERE  TYPE = 'p'

下面举例一些应用:

1. 给定一个值, 希望得到某个日间范围的日期数据。

比如:已知今天是: 2015-01-30,那后面连续30天的日期则为:

SELECT CONVERT(CHAR(10),DATEADD(DAY,number,GETDATE()),120) AS [日期]FROM MASTER..spt_values WHERE TYPE='P' AND number>0

2.  等分数

--将一个数值以 1 来均分成多个等份,不足的显示小数;WITH cte(past) AS(         SELECT 2.2     )SELECT number,(           CASE                 WHEN past >= number THEN 1.0      --当原小数值>当前行值显示 1.0                ELSE past -FLOOR(past)			  --否则显示为小数值           END       ) AS resultFROM   cte,MASTER..spt_valuesWHERE  	   1=1	   AND CEIliNG(past) >= number	--原小数值向上取大 >= number       AND TYPE = 'P'       AND number > 0/*number      result----------- ---------------------------------------1           1.02           1.03           0.2*/

由此可见, 这个玩意还是挺灵活的, 关键看你怎么用吧。

不过也有局限, 毕竟它连续的只有 0~2047个数字

总结

以上是内存溢出为你收集整理的SQLServer——MASTER..spt_values全部内容,希望文章能够帮你解决SQLServer——MASTER..spt_values所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1162130.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存