b)
select substring('  aaa,bb,cc,dd,ee',4,6)

解决方案 »

  1.   

    declare @s varchar(20)
    set @s='  aaa,bb,cc,dd,ee'--以‘,’作为分隔,把个部分取出来
    select identity(int,1,1) id,@s [str] into # from syscolumns a,syscolumns bselect substring([str],id,charindex(',',','+[str]+',',id+1)-id-1)
    from # where substring(','+[str],id,1)=','drop table #/*
    -------------------- 
      aaa
    bb
    cc
    dd
    ee(所影响的行数为 5 行)
    */
    --取出第4字符到第10字符间的字符串
    select substring(@s,4,10)/*
    -------------------- 
    aa,bb,cc,d(所影响的行数为 1 行)
    */--取出‘,’最后一次出现的位置,并打印出来
    select len(@s)-charindex(',',reverse(@s))+1/*
    ----------- 
    15(所影响的行数为 1 行)
    */
      

  2.   

    declare @s varchar(20)
    DECLARE @LINID VARCHAR(30)
    set @s='  aaa,bb,cc,dd,ee'
    DECLARE @I_WEIZHI int     
    SET @I_WEIZHI=charindex(',',@S)
    --以‘,’作为分隔,把个部分取出来
    WHILE (@I_WEIZHI)>0
    BEGIN

    SELECT  @LINID=left(@S,(@I_WEIZHI-1))
    SET  @LINID=LTRIM(@LINID)
    SELECT @LINID

    SET @S=SUBSTRING(@S,(@I_WEIZHI+1),(LEN(@S)-@I_WEIZHI))

    SET @I_WEIZHI=charindex(',',@S)
                           
    END
      

  3.   

    create table #(Tid int IDENTITY (1,1)NOT NULL  ,T varchar(10))
    declare @s varchar(20)
    declare @T varchar(20)
    declare @i int
    set @i=1
    set @s='  aaa,bb,cc,dd,ee'
    set @s=ltrim(@s)
    while @i<=4
    begin
      insert # select left(@s,CHARINDEX(',',@s)-1)
       set @s=right(@s,len(@s)-CHARINDEX(',',@s)) 
       set @i =@i +1
    end
    select * from #
      

  4.   

    a)、
    create table #TMP(Pro varchar(100))
    insert into #TMP select '  aaa,bb,cc,dd,ee'declare @sql varchar(8000)
    select @sql=''
    select @sql=@sql+' union select '''+replace(rtrim(ltrim(Pro)),',',''' union select ''')+'''' from #TMP 
    select @sql=stuff(@sql,1,6,'')
    select @sql=stuff(@sql,charindex('union',@sql)-1,0,' as Pro')
    select @sql='select a.Pro from ('+@sql+') a '
    exec(@sql)b)、
    select substring(@s,4,10)c)、
    select len(@s)-charindex(',',reverse(@s))+1