+ -
当前位置:首页 → 问答吧 → sql计算

sql计算

时间:2011-11-21

来源:互联网

用一条SQL语句统计子字符串在母字符品出次的次数

作者: longai123   发布时间: 2011-11-21

SQL code
declare @s1 varchar(10)
declare @s2 varchar(10)
set @s1='abcabcssssssssssssssssssss'
set @s2='abc'

select (len(@s1)-len(replace(@s1,@s2,'')))/len(@s2)

作者: fredrickhu   发布时间: 2011-11-21

SQL code
delcare @str varchar(10)='AABC'
--'A'在@str中的次数
select len(@str)-len(replace(@atr,'A',''))

作者: ssp2009   发布时间: 2011-11-21

SQL code
declare @s1 varchar(10)
declare @s2 varchar(10)
set @s1='abcabcssssssssssssssssssss'
set @s2='abc'

select (len(@s1)-len(replace(@s1,@s2,'')))/len(@s2)
/*-----------
2

(1 行受影响)
*/

作者: fredrickhu   发布时间: 2011-11-21

引用 3 楼 fredrickhu 的回复:
SQL code

declare @s1 varchar(10)
declare @s2 varchar(10)
set @s1='abcabcssssssssssssssssssss'
set @s2='abc'

select (len(@s1)-len(replace(@s1,@s2,'')))/len(@s2)
/*-----------
2

(1 行受影响)
……

学习
先把把父串里的子串替换成空,然后用原父串长度减去替换后的字符串的长度,再除以子串的长度,获得的整数值就是次数

作者: pengxuan   发布时间: 2011-11-21

引用 1 楼 fredrickhu 的回复:
SQL code
declare @s1 varchar(10)
declare @s2 varchar(10)
set @s1='abcabcssssssssssssssssssss'
set @s2='abc'

select (len(@s1)-len(replace(@s1,@s2,'')))/len(@s2)


这样做是会出错的.

比如,在字符串 'abcbabcba' 中查找 'abcba' 出现的次数就会出错.

作者: qianjin036a   发布时间: 2011-11-21

SQL code
declare @s nvarchar(4000)
declare @s1 nvarchar(10)
set @s='voiuaefabcbabcbafwsd'
set @s1='abcba'
select count(*) from master..spt_values where type='p' and number<=len(@s)-len(@s1) and charindex(@s1,@s,number)=number
/*
-----------
2

(1 行受影响)

*/

作者: qianjin036a   发布时间: 2011-11-21