-- @Str是 “名字=值,名字=值” 形式表示DECLARE @STR NVARCHAR(1000)
SET @STR = 'NAME=YUNA,AGE=31,Fan=Music,Address=XiAn'
怎提从@Str中提取出 Fan的值 “Music” 呢?  只提出结果 "Music" 子串就行

解决方案 »

  1.   

    本帖最后由 libin_ftsafe 于 2009-07-03 21:27:36 编辑
      

  2.   

    这么复杂?不用SELECT 行吗?
      

  3.   

    DECLARE @STR NVARCHAR(200) 
    SET @STR = 'NAME=YUNA,AGE=31,Fan=Music,Address=XiAn' 
    set @str=right(@str,len(@str)-charindex('Fan',@str)+1)
    select substring(@str,charindex('=',@str)+1,charindex(',',@str)-charindex('=',@str)-1)
    /*
                                                                                                                                                                                                             
    ----------------
    Music(所影响的行数为 1 行)*/
      

  4.   


    你这样写,如果获取address的值,就错误啊
      

  5.   

    这样写不管你换成NAME,AGE,Fan,Address这几个任意一个都OK的DECLARE @STR NVARCHAR(200) 
    SET @STR = 'NAME=YUNA,AGE=31,Fan=Music,Address=XiAn'
    set @str=','+@str+','
    set @str=right(@str,len(@str)-charindex('Address',@str)+1)
    select substring(@str,charindex('=',@str)+1,charindex(',',@str)-charindex('=',@str)-1)
      

  6.   

    DECLARE @STR NVARCHAR(1000),@PART varchar(30)
    SET @STR = 'NAME=YUNA,AGE=31,Fan=Music,Address=XiAn'SET @PART='Fan'  --替换该部分即可select 
        left(str,charindex(',',str)-1) 
    from 
        (select stuff(@STR,1,charindex(@PART+'=',@STR)+LEN(@PART),'')+',' as str) t
      

  7.   

    我的 @STR 实际上是 NTEXT 备注字段,不能用 STUFF 啊
      

  8.   


    你的有错误啊例如我的名字是 YUNAAGE 怎么办?
    DECLARE @STR NVARCHAR(200) 
    SET @STR = 'NAME=YUNAAGE,AGE=31,Fan=Music,Address=XiAn'
    set @str=','+@str+','
    set @str=right(@str,len(@str)-charindex('Age',@str)+1)
    --select substring(@str,charindex('=',@str)+1,charindex(',',@str)-charindex('=',@str)-1)
    print @str
      

  9.   

    本帖最后由 libin_ftsafe 于 2009-07-03 22:40:44 编辑
      

  10.   

    关键是 Ntext 字段不能用 stuff 函数啊
      

  11.   

    关键是 Ntext 字段不能用 stuff 函数啊 
     
      

  12.   

    convert (nvarchar(4000),字段) 就能用stuff了
    sql2005就直接convert(nvarchar(max),字段)
      

  13.   


    declare @str nvarchar(1000)
    SET @STR = 'NAME=YUNAFan,AGE=31,Fan=Music,Address=XiAn' declare @find nvarchar(30)
    set @find='Fan'select  substring( substring(@str, case when patindex('%'+@find+'=%',@str)=0 then datalength(@str) else patindex('%'+@find+'=%',@str) end+len(@find)+1, datalength(@str) ) 
                                ,1
                                , case when patindex('%,%',substring(@str,patindex('%'+@find+'=%',@str)+len(@find)+1, datalength(@str) ) )=0
                                           then datalength(@str) 
                                          else   patindex('%,%', substring(@str,patindex('%'+@find+'=%',@str)+len(@find)+1, datalength(@str) ))-1
                                           end
                             )