一个看似简单但写不出来的SQL
NIDEC/日本电产大连有限公司/原价改善室 
 NIDEC/日本电产大连有限公司/内部监查室 
 NIDEC/日本电产大连有限公司/DCM生产部 
 NIDEC/日本电产大连有限公司/DCM生产部/组立G 
 NIDEC/日本电产大连有限公司/DCM生产部/组立G/RAC工程 
 NIDEC/日本电产大连有限公司/DCM生产部/组立G/RAC工程/股1 
 NIDEC/日本电产大连有限公司/FAN生产部/组立M/RAC工程/股1/班1   
 有这样一个字段(fullname)数据如上,要查出第二个“/”到第四个 "/ "之间的 
 如:DCM生部/组立G 
             FAN生产部/组立M   
       试了很长时间没试成,请教   。谢谢   :)                   
------解决方案--------------------  create table Test 
 ( 
    T1 varchar(500) 
 )   
 insert Test select  'NIDEC/日本电产大连有限公司/原价改善室 ' 
 insert Test select  'NIDEC/日本电产大连有限公司/内部监查室 ' 
 insert Test select  'NIDEC/日本电产大连有限公司/DCM生产部 ' 
 insert Test select  'NIDEC/日本电产大连有限公司/DCM生产部/组立G ' 
 insert Test select  'NIDEC/日本电产大连有限公司/DCM生产部/组立G/RAC工程 ' 
 insert Test select  'NIDEC/日本电产大连有限公司/DCM生产部/组立G/RAC工程/股1 ' 
 insert Test select  'NIDEC/日本电产大连有限公司/FAN生产部/组立M/RAC工程/股1/班1 '     
 select DISTINCT substring(T1,charindex( '/ ',T1,charindex( '/ ',T1)+1)+1,(charindex( '/ ',T1,charindex( '/ ',T1,charindex( '/ ',T1,charindex( '/ ',T1)+1)+1)+1)+1)-(charindex( '/ ',T1,charindex( '/ ',T1)+1)+1)-1) 
 from Test 
 where len(T1)-len(REPLACE(T1, '/ ', ' '))> =4
------解决方案----------------------环境 
 create table tab 
 ( 
 fullname varchar(100) 
 )   
 insert into tab select  'NIDEC/日本电产大连有限公司/原价改善室 ' 
 insert into tab select  'NIDEC/日本电产大连有限公司/内部监查室 ' 
 insert into tab select  'NIDEC/日本电产大连有限公司/DCM生产部 ' 
 insert into tab select  'NIDEC/日本电产大连有限公司/DCM生产部/组立G ' 
 insert into tab select  'NIDEC/日本电产大连有限公司/DCM生产部/组立G/RAC工程 ' 
 insert into tab select  'NIDEC/日本电产大连有限公司/DCM生产部/组立G/RAC工程/股1 ' 
 insert into tab select  'NIDEC/日本电产大连有限公司/FAN生产部/组立M/RAC工程/股1/班1 '   
 --查询 
 select left(newfullname,charindex( '/ ',newfullname,charindex( '/ ',newfullname) + 1)-1) 
 from 
 ( 
 select stuff(fullname,1,charindex( '/ ',fullname,charindex( '/ ',fullname)+1), ' ') as newfullname 
 from tab 
 where len(fullname) - len(replace(fullname, '/ ', ' ')) > = 4 
 )a   
 --结果 
 DCM生产部/组立G 
 DCM生产部/组立G 
 FAN生产部/组立M
------解决方案--------------------declare @a table(x varchar(100)) 
 insert @a select  'NIDEC/日本电产大连有限公司/原价改善室 ' 
 union all select  'NIDEC/日本电产大连有限公司/内部监查室 ' 
 union all select  'NIDEC/日本电产大连有限公司/DCM生产部 ' 
 union all select  'NIDEC/日本电产大连有限公司/DCM生产部/组立G ' 
 union all select  'NIDEC/日本电产大连有限公司/DCM生产部/组立G/RAC工程 ' 
 union all select  'NIDEC/日本电产大连有限公司/DCM生产部/组立G/RAC工程/股1 ' 
 union all select  'NIDEC/日本电产大连有限公司/FAN生产部/组立M/RAC工程/股1/班1 '     
 select distinct left(x,charindex( '/ ',x,charindex( '/ ',x,1)+1)-1) from 
 ( 
 select right(x,len(x)-charindex( '/ ',x,charindex( '/ ',x,1)+1)) x   
 from @a where len(x)-len(replace(x, '/ ', ' '))> 3) aa
------解决方案----------------------reslut 
 /* 
 DCM生产部/组立G 
 FAN生产部/组立M   
 (所影响的行数为 2 行) 
 */ 
------解决方案--------------------CREATE TABLE TABLE_DCM 
 (ID INT IDENTITY(1,1) , 
   fullname VARCHAR(100) 
 ) 
 DELETE TABLE_DCM