SQLServer——MASTER..spt_values
发布时间:2020-12-12 12:51:01 所属栏目:MsSql教程 来源:网络整理
导读:常常见到这个表,人家用得天花乱坠的。 自己select一看却莫名其妙的。 花点时间学下吧。 如上, 这个表主要用来保存一些枚举值, 据说是从sybase继承过来,许多函数和存储过程可以看到它的身影。也可以叫系统常量表吧。 里面的东西比较多, 但最常用的是: -
常常见到这个表,人家用得天花乱坠的。 自己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 result FROM cte,MASTER..spt_values WHERE 1=1 AND CEILING(past) >= number --原小数值向上取大 >= number AND TYPE = 'P' AND number > 0 /* number result ----------- --------------------------------------- 1 1.0 2 1.0 3 0.2 */ 由此可见, 这个玩意还是挺灵活的, 关键看你怎么用吧。 不过也有局限, 毕竟它连续的只有 0~2047个数字 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |