各位大哥:
   小弟这有这样一字段值:0001/0002;想得到的查询结果是:第一条记录0001,第二条记录0002也就是把这个字段值拆分到两条查询记录,中间/是固定的,请问这样的查询语句应该怎样写?谢谢了.
过路的大哥大姐也请帮忙顶一下.

解决方案 »

  1.   

    select LEFT(col,charindex('/',col)-1) col from tbl 
    union all
    select RIGHT(col,LEN(col)-charindex('/',col)) col from tbl
    order by col
      

  2.   

    楼上正解 怎么不用union all就能查出来呢
      

  3.   

    看看这个对你可能有帮助create table tblTest(PdID int,PdName varchar(100))insert tblTest
    select 1,'A10'           union all
    select 2,'A20/A20S'      union all
    select 3,'A30/A30K/A30M' union all
    select 4,'A301'          union all
    select 5,'A301M'
    select * from tblTest
    go-- 建立一个辅助的临时表就可以了
    SELECT TOP 8000 
    id = identity(int,1,1) 
    INTO # FROM syscolumns a, syscolumns b    
    SELECT 
        A.PdID, 
        PdName = SUBSTRING(A.PdName, B.ID, CHARINDEX('/', A.PdName + '/', B.ID) - B.ID) 
    FROM tblTest A, # B
    WHERE SUBSTRING('/' + a.PdName, B.id, 1) = '/'    
    ORDER BY 1,2
    GODROP TABLE tblTest, #
      

  4.   

    declare @value varchar(8000)
    set @value ='001/002/003'set @value='select '''+replace(@value,'/',''' union select ''')+''''
    exec (@value)
      

  5.   

    jinjazz只适合对单个字符串操作。不适合一个表查询的
      

  6.   

    create table tblTest(PdID varchar(100),PdName varchar(100))insert tblTest
    select '1','1'           union all
    select '2/d','3/4'      union all
    select 'e/g/f','7/8/9' union all
    select 'k','5'          union all
    select 'r','6'
    select * from tblTest
    go-- 建立一个辅助的临时表就可以了
    SELECT TOP 8000
    id = identity(int,1,1) 
    INTO # FROM syscolumns a, syscolumns b    select * from #
    SELECT 
        
        PdID=SUBSTRING(A.PdID, B.ID, CHARINDEX('/', A.PdID + '/', B.ID) - B.ID) , 
        PdName = SUBSTRING(A.PdName, B.ID, CHARINDEX('/', A.PdName + '/', B.ID) - B.ID) 
    FROM tblTest A, # B
    WHERE SUBSTRING('/' + a.PdName, B.id, 1) = '/'  
    GODROP TABLE tblTest, #