用SQL计算同一个字符(汉字、字母、数字、表情、符号)连续重复出现的次数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用SQL计算同一个字符(汉字、字母、数字、表情、符号)连续重复出现的次数相关的知识,希望对你有一定的参考价值。
如:aaaa%%%vfahg%&&&
可以看出a连续重复4次,%连续重复3次,&连续重复3次
LENGTH(REPLACE('asdfgasdfasdfascaxsd', 'a', '')) AS COUNTS
FROM DUAL;
--如果要同时判断所有字符出现次数的话,写个存储过程吧 参考技术B
SQL Server可以使用如下查询, 其他数据库要做相应修改:
declare @s nvarchar(4000), @i int, @len int, @v nvarchar(10)set @s = 'aaaa%%%vfahg%&&&'
declare @tb table (txt nvarchar(10), cnt int)
select @i = 0, @len = len(@s)
while @i < @len
begin
set @v = substring(@s, @i + 1, 1)
update @tb
set cnt = cnt + 1
where txt = @v
if @@rowcount < 1
begin
insert into @tb (txt, cnt)
select @v, 1
end
set @i = @i + 1
end
select * from @tb追问
是连续重复呢。这样的话%应该只有3次。请问这个怎么写啊?
追答那就加入判断,但是间隔开来的连续(指类似%%%faffd%%,这种情况是合并起来计数的),SQL如下:
declare @s nvarchar(4000), @i int, @len int, @v nvarchar(10), @t nvarchar(10), @cc intselect @s = 'aaaa%%%vfahg%&&&', @t = ''
declare @tb table (txt nvarchar(10), cnt int)
select @i = 0, @len = len(@s)
while @i < @len
begin
set @v = substring(@s, @i + 1, 1)
if @t = @v -- 与之前值相同,视为连续
begin
update @tb
set cnt = cnt + (case when @cc = 1 then 2 else 1 end)
where txt = @v
if @@rowcount < 1
begin
insert into @tb (txt, cnt)
select @v, 2
end
set @cc = @cc + 1
end
else
begin
select @t = @v, @cc = 1
end
set @i = @i + 1
end
select * from @tb本回答被提问者和网友采纳
javascript要判断一个字符串是不是只包含数字,英文字母,汉字,括号该怎么写呢?
参考技术A 一个字符串是否只包含数字,英文字母,汉字,括号的正则/^[0-9a-zA-Z\u4E00-\u9FA5\(\)]*$/
用这个正则就可以了 参考技术B 你好!<br><br>alert(!/[^\u4E00-\u9FA5\w()]+/.test('s)tsa的萨菲我ing'));<br><br>仅代表个人观点,不喜勿喷,谢谢。
以上是关于用SQL计算同一个字符(汉字、字母、数字、表情、符号)连续重复出现的次数的主要内容,如果未能解决你的问题,请参考以下文章