--PARSENAME可以用截取字符串用,但是只能是四个以内,也就是三个分隔符
DECLARE @T TABLE
(
COL VARCHAR(80)
)
INSERT INTO @T
SELECT '123_12_124' UNION ALL
SELECT '1234_125_1243'
SELECT COL,
COL1 = PARSENAME(REPLACE(COL,'_','.'),3), ----替换一下 '.' 因为 parsename 只认 '.'
COL2 = PARSENAME(REPLACE(COL,'_','.'),2),
COL3 = PARSENAME(REPLACE(COL,'_','.'),1)
FROM @T
COL COL1 COL2 COL3
---------- ---------- ---------- ----------
123_12_124 123 12 124
1234_125_1 1234 125 1243
select Parsename('aaa.master.dbo.spt_values',1)
, Parsename('aaa.master.dbo.spt_values',2)
, Parsename('aaa.master.dbo.spt_values',3)
, Parsename('aaa.master.dbo.spt_values',4)
(无列名) (无列名) (无列名) (无列名)
spt_values dbo master aaa
select * from master.dbo.spt_values ---数据又是存在这个表里面倒序
select * from master..spt_values --这个表还存在连续数据
如下面的链接:http://topic.csdn.net/u/20120508/14/c2c06411-741e-4f60-9026-6312de0188a9.html?77079
--简单的用spt_values表也查询1-200的数据.
select distinct number from master..spt_values
where type='p' and number >= 1 and number =< 200