SQL 统计字符出现的次数

SQL 统计字符出现的次数,你想统计某个字符或者子字符串在给定字符串里出现的次数,考虑如下的字符串。

SQL 统计字符出现的次数 问题描述

你想统计某个字符或者子字符串在给定字符串里出现的次数,考虑如下的字符串。

10,CLARK,MANAGER

你想知道该字符串里有多少个逗号。

SQL 统计字符出现的次数 解决方案

字符串的总长度减去去掉逗号之后的字符串长度,就得到了逗号的个数。所有的数据库管理系统都提供了获取字符串长度的函数以及从字符串里删除字符的函数。大多数情况下,这些函数分别是 LENGTHREPLACESQL Server 用户需要用内置函数 LEN 替换 LENGTH)。

1 select (length('10,CLARK,MANAGER')-
2        length(replace('10,CLARK,MANAGER',',','')))/length(',')
3        as cnt
4   from t1

SQL 统计字符出现的次数 扩展知识

使用简单的减法运算就可以解决这个问题。第 1 行调用 LENGTH 函数获取字符串总长度,第 2 行仍然调用 LENGTH 函数获取不含逗号的字符串长度,而逗号的删除则借助了 REPLACE 函数。
把上述两个长度相减,得到的差值就是字符串里逗号的个数。最后的除法运算是用上述两个长度的差值除以我们正在搜索的那个字符串长度。如果被搜索的字符串的长度大于 1 的话,就必须使用除法运算。下面的例子统计在字符串 HELLO HELLO 中出现了多少个 LL,如果没有进行除法运算的话,就不会得到正确的结果。

select
       (length('HELLO HELLO')-
       length(replace('HELLO HELLO','LL','')))/length('LL')
       as correct_cnt,
       (length('HELLO HELLO')-
       length(replace('HELLO HELLO','LL',''))) as incorrect_cnt
  from t1
 
CORRECT_CNT INCORRECT_CNT
----------- -------------
          2             4

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程