得到一个字符串在另一个字符串中出现的次数.sqlif 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')
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')
set @content='汽车投诉的概率势必提高。加上目前,汽车三包规定尚未出台,处理起来缺了依据,就更加难上加难了'select len(@content)-len(replace(@content,'汽车',' ')) as 次数
/*
次数
------
2
*/
select * from tab order by len(content)-len(replace(content,'汽车',' '))
set @content='汽车投诉的概率势必提高。加上目前,汽车三包规定尚未出台,处理起来缺了依据,就更加难上加难了'select (len(@content)-len(replace(@content,'汽车','')))/len('汽车') as 次数
/*
次数
-----------
2(所影响的行数为 1 行)
*/declare @find as varchar(10)
set @find = '汽车'select (len(@content)-len(replace(@content,@find,'')))/len(@find) as 次数
/*
次数
-----------
2(所影响的行数为 1 行)
*/
select @content='汽车投诉的概率势必提高。加上目前,汽车三包规定尚未出台,处理起来缺了依据,就更加难上加难了',
@keyword='汽车'
select len(@content)-len(replace(@content,@keyword,replicate('a',len(@keyword)-1))) as 次数
/*
次数
------
2
*/
liangCK 的方法我回去做个试验
set @content='汽车'
select * from(
select (len(列名)-len(replace(列名,@content,'')))/len(@content) as 次数
from 表
where ...)
order by 次数 desc