--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