请教,这个结果是如何得到的?
这是刚才一个网友发的代码?
1.系统表master.dbo.spt_values,在这里起到的作用是什么呢?
2.最终结果如何得来的,我分析不出来?declare @str varchar(100)
set @str='1,4-9,10-13'select *
from
(
select number,SUBSTRING(@str,number,CHARINDEX(',',@str+',',number)-number) AS [col]
from master.dbo.spt_values
where [type]='p'
AND number BETWEEN 1 AND LEN(@str)
AND SUBSTRING(','+@str,number,1)=','
) X/*
number col
----------- -----------------
1 1
3 4-9
7 10-13(所影响的行数为 3 行)
*/
这是刚才一个网友发的代码?
1.系统表master.dbo.spt_values,在这里起到的作用是什么呢?
2.最终结果如何得来的,我分析不出来?declare @str varchar(100)
set @str='1,4-9,10-13'select *
from
(
select number,SUBSTRING(@str,number,CHARINDEX(',',@str+',',number)-number) AS [col]
from master.dbo.spt_values
where [type]='p'
AND number BETWEEN 1 AND LEN(@str)
AND SUBSTRING(','+@str,number,1)=','
) X/*
number col
----------- -----------------
1 1
3 4-9
7 10-13(所影响的行数为 3 行)
*/
你这样就知道了:
select number from master..spt_values where type='p'
我的是 0-255呀。
sql server 2000