这里数据库中的一列。。
A=123,B=32,C=444,D=1R13
A=123,B=32,C=44,D=1R13
A=123,B=32,C=444,D=1R13
A=123,B=32,C=4444,D=1R13
现在只要取C的值。(也是说那些4)
刚开始原来以为是用两个函数就可以了(SUBSTRING,charindex)
但是C的值长度又定。。请大家帮帮忙

解决方案 »

  1.   

    如果确保是ABCD,即3个逗号的话,可以直接
    parsename(replace(col,',','.'), ?)  --> ? 用1,2,3,4來取
      

  2.   

     
    select replace(parsename(replace('A=123,B=32,C=444,D=1R13',',','.'),2),'c=','')
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    444(1 行受影响)
      

  3.   

     
    select replace(parsename(replace(列名,',','.'),2),'c=','')
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    444(1 行受影响)
      

  4.   

    --> 测试数据:[ta]
    if object_id('[ta]') is not null drop table [ta]
    go
    create table [ta]([col] varchar(24))
    insert [ta]
    select 'A=123,B=32,C=444,D=1R13' union all
    select 'A=123,B=32,C=44,D=1R13' union all
    select 'A=123,B=32,C=444,D=1R13' union all
    select 'A=123,B=32,C=4444,D=1R13'--------------------------------查询开始------------------------------select substring([col],charindex('C=',[col])+2,charindex('D=',[col])-charindex('C=',[col])-3) 
    from [ta]
    /*
    ------------------------
    444
    44
    444
    4444(4 行受影响)
    */
      

  5.   

    declare @str nvarchar(100)
    set @str='A=123,B=32,C=444,D=1R13'
    select substring(@str,charindex('C',@str),charindex('D',@str)-1-charindex('C',@str))
    ----------------------------------------------------------------------------------------------------
    C=444
      

  6.   

    --建立测试环境declare @tb TABLE 
    (
    ID int identity, 
    Code varchar(200)
    )INSERT @tb
     select 'A=123,B=32,C=444,D=1R13' union all 
     select 'A=123,B=32,C=44,D=1R13' 
    --查询
    select substring(code,charindex('c=',code)+3,charindex(',d=',code)-charindex('c=',code)-3)
    from @tb
    --结果
    /*(2 行受影响)--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    44
    4(2 行受影响)*/
      

  7.   

    declare @var varchar(100)
    set @var='A=123,B=32,C=444,D=1R13'
    select SUBSTRING(@var,PATINDEX('%C%',@var)+2,PATINDEX('%,D%',@var)-PATINDEX('%C%',@var)-2)
    ----------------------------------------------------------------------------------------------------
    444(1 行受影响)