《巧用master..spt_values表输出数字或者时间常量表》由会员分享,可在线阅读,更多相关《巧用master..spt_values表输出数字或者时间常量表(9页珍藏版)》请在金锄头文库上搜索。
1、巧用 master.spt_values 表输出数字或者时间常量表http:/ 开发中经常需要使用数字或者时间的常量表。比如,输出一年的月份表,输出 1000 以内的自然数等等。数量连续且不超过 2048。那么使用 master.spt_values 表就会再也方便不过了。例如输出 1000 以内的自然数:select number from master.spt_valueswhere type=P and number between 1 and 1000dx:原作有误master.spt_values 表的 type 字段值为 p 的,对应,number 字段的值是从 1 至 255,原
2、始值最大 255(不知主动加到 2000 或以上有没有问题)输出 2008 年至今以来的月份列表:create table Mon(ID int identity(1,1),Mon varchar(6)GODECLARE BeginMonth varchar(6),EndMonth varchar(6)SELECTBeginMonth=200801,EndMonth=200906INSERT Mon(Mon)SELECTCONVERT(VARCHAR(6),DATEADD(month,number,BeginMonth+01),112)FROM master.spt_values WHERE
3、type=P and DATEADD(month,number,BeginMonth+01) and starttime is not nullset w= and datediff(d,+convert(varchar(10),starttime,120)+,Time)=0 if endtime and starttime is not nullset w=w+ and datediff(d,+convert(varchar(10),endtime,120)+,Time) and uid is not nullset w=w+ Uid=+uid+set g= group by a.d exe
4、c(sql+w+g)endgop_test1 2010-5-01,2010-9-12,年,gop_test1 2010-5-01,2010-9-12,月,gop_test1 2010-5-01,2010-9-12,日,/*(所影响的行数为 3 行)(所影响的行数为 1 行)收入 支出 余额 time - - - -8.00 59.00 49.00 2010(所影响的行数为 1 行)(所影响的行数为 5 行)收入 支出 余额 time - - - -.00 .00 .00 2010-054.00 9.00 95.00 2010-06.00 .00 95.00 2010-074.00 50.00
5、49.00 2010-08.00 .00 49.00 2010-09(所影响的行数为 5 行)警告: 聚合或其他 SET 操作消除了空值。(所影响的行数为 135 行)收入 支出 余额 time - - - -.00 .00 .00 2010-05-01.00 .00 .00 2010-05-02.00 .00 .00 2010-05-03.00 .00 .00 2010-05-04.00 .00 .00 2010-05-28.00 .00 .00 2010-05-29.00 .00 .00 2010-05-30.00 .00 .00 2010-05-31.00 .00 .00 2010-06
6、-01.00 .00 .00 2010-06-02.00 .00 .00 2010-06-03.00 .00 .00 2010-06-04.00 .00 .00 2010-06-05.00 .00 .00 2010-06-064.00 9.00 95.00 2010-06-07.00 .00 95.00 2010-06-08.00 .00 95.00 2010-06-09.00 .00 95.00 2010-06-10.00 .00 95.00 2010-06-11.00 .00 95.00 2010-06-12.00 .00 95.00 2010-06-13.00 .00 95.00 2010-06-14.00 .00 95.00 2010-06-15.00 .00