sql计算

longai123 2011-11-21 10:37:49
用一条SQL语句统计子字符串在母字符品出次的次数
...全文
71 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
苦苦的潜行者 2011-11-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qianjin036a 的回复:]

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 char……
[/Quote]

这种情况在word里面查找会查找到两处,但是替换只替换一处.
在Emeditor和Notepad里面查找只查找到一处,替换也只替换一处.

那么它到底出现几次?

苦苦的潜行者 2011-11-22
  • 打赏
  • 举报
回复

我勒个去,都是大神啊/
勿勿 2011-11-22
  • 打赏
  • 举报
回复
+1 很周到
[Quote=引用 6 楼 qianjin036a 的回复:]
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 c……
[/Quote]
-晴天 2011-11-21
  • 打赏
  • 举报
回复
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 行受影响)

*/
-晴天 2011-11-21
  • 打赏
  • 举报
回复
[Quote=引用 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)
[/Quote]

这样做是会出错的.

比如,在字符串 'abcbabcba' 中查找 'abcba' 出现的次数就会出错.
pengxuan 2011-11-21
  • 打赏
  • 举报
回复
[Quote=引用 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 行受影响)
……
[/Quote]
学习
先把把父串里的子串替换成空,然后用原父串长度减去替换后的字符串的长度,再除以子串的长度,获得的整数值就是次数
--小F-- 2011-11-21
  • 打赏
  • 举报
回复
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 行受影响)
*/
快溜 2011-11-21
  • 打赏
  • 举报
回复
delcare @str varchar(10)='AABC'
--'A'在@str中的次数
select len(@str)-len(replace(@atr,'A',''))
--小F-- 2011-11-21
  • 打赏
  • 举报
回复
declare @s1 varchar(10)
declare @s2 varchar(10)
set @s1='abcabcssssssssssssssssssss'
set @s2='abc'

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

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧