比如:
1      test123test124
2      test134
3      best
4      hitest
5      quicktestandbesttest我想用select查询这个text字段中,包含多少个test,并形成新的列,应该怎么做?谢谢.
SELECT [ID],[TEXT] FROM TBL

解决方案 »

  1.   

    select *,(len([text])- len(replace([text],'test',''))/4 
    from tbl
      

  2.   

    select *,(len([text])- len(replace([text],'test','')))/4  
    from tbl
      

  3.   

    declare @s varchar(30)set @s = 'quicktestandbesttest'select @s,(len(@s)- len(replace(@s,'test','')))/4 
                                               
    ------------------------------ ----------- 
    quicktestandbesttest           2(所影响的行数为 1 行)
      

  4.   

    消息 8116,级别 16,状态 1,第 1 行
    参数数据类型 text 对于 len 函数的参数 1 无效。
      

  5.   

    将石头的  [text]  全换为  cast([text] as varchar(max))适用于 2005 以上版,2000 可以写 varchar(4000) 但长度超出可能会截断。
      

  6.   


    不会吧 转换了还不行 你的SQL版本是?
      

  7.   


    select [ID],[TEXT],(len(convert(varchar(max),[TEXT]))-len(replace(convert(varchar(max),[TEXT]),'test','')))/4 as test_nums
    from TBL
      

  8.   

    应该没有问题呀declare @t table (id int,col text)
    insert into @t
    select 1,'test123test124' union all
    select 2,'test134' union all
    select 3,'best' union all
    select 4,'hitest' union all
    select 5,'quicktestandbesttest'select col,[count]=
    (len(cast(col as varchar(max)))- 
    len(replace(cast(col as varchar(max)),'test','')))/4 from @t
    /*
    col                    count
    ---------------------- --------------------
    test123test124         2
    test134                1
    best                   0
    hitest                 1
    quicktestandbesttest   2
    */