如何得到一個字符串中某一個子字符出現的次數.如: 字符串
'/0000/0002/0003/0005/0006/0007/0008/0009/0010/0011'
我要得到字符串中'/'出現的次數. 結果為:10

解决方案 »

  1.   

    declare @str varchar(100)
    set @str='/0000/0002/0003/0005/0006/0007/0008/0009/0010/0011' 
    select (len(@str)-len(replace(@str,'/','')))/len('/')
      

  2.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_getcharcount]') and xtype in (N'FN', N'IF', N'TF'))
    drop function [dbo].[f_getcharcount]
    GO--得到一个字符串在另一个字符串中出现的次数
    create function f_getcharcount(
    @str varchar(8000),
    @chr varchar(20)
    ) returns int
    as
    begin
    declare @re int,@i int
    select @re=0,@i=charindex(@chr,@str)+1
    while @i>1
    select @re=@re+1
    ,@str=substring(@str,@i,8000)
    ,@i=charindex(@chr,@str)+1
    return(@re)
    end
    go--调用示例
    select dbo.f_getcharcount('aadddbbbbad','ad')
      

  3.   

    declare @str varchar(1000)
    set @str='/0000/0002/0003/0005/0006/0007/0008/0009/0010/0011'
    select len(@str) - len(replace(@str,'/',''))
      

  4.   

    declare @str varchar(1000)
    set @str='/0000/0002/0003/0005/0006/0007/0008/0009/0010/0011' 
    select len(@str)-len(replace(@str,'/',''))
      

  5.   


    declare @str varchar(1000)
    declare @str2 varchar(1000)
    set @str='/0000/0002/0003/0005/0006/0007/0008/0009/0010/0011' 
    set @str2='/00'select (len(@str)-len(replace(@str,@str2,'')))/len(@str2)
      

  6.   

    declare @str varchar(1000) 
    set @str='/0000/0002/0003/0005/0006/0007/0008/0009/0010/0011' 
    select len(@str)-len(replace(@str,'/',''))
      

  7.   

    declare @str varchar(200)
    set @str='/0000/0002/0003/0005/0006/0007/0008/0009/0010/0011'
    select len(@str)-len(replace(@str,'/',''))