用SQL计算同一个字符(汉字、字母、数字、表情、符号)连续重复出现的次数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用SQL计算同一个字符(汉字、字母、数字、表情、符号)连续重复出现的次数相关的知识,希望对你有一定的参考价值。

如:aaaa%%%vfahg%&&&
可以看出a连续重复4次,%连续重复3次,&连续重复3次

参考技术A SELECT LENGTH('asdfgasdfasdfascaxsd') -
       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 int
select @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计算同一个字符(汉字、字母、数字、表情、符号)连续重复出现的次数的主要内容,如果未能解决你的问题,请参考以下文章

汉字编码方案

js 如何判断字符长度 (包括汉字,英文字符)

SQLserver排序问题,字段中含有字母、数字、汉字,如何只按数字排序

正则表达式转义符

java获得汉字的大写字母,其他字符不变

c#如何把输入的字符(汉字和英文和数字)输出为对应的二进制