MySQL查询字符串中子串出现次数的方法

云舒
云舒
发布时间:2026-10-15| 6人浏览过
原创

本文介绍如何在MySQL数据库中统计特定子字符串在母字符串中出现的次数。利用LENGTH获取字符串长度,结合REPLACE将目标子串替换为空字符,通过计算长度差值并除以子串自身长度,即可得出精确的出现频次。该方法适用于变量查询或表字段统计。

MySQL查询字符串中某个字符串出现的次数

假设我们需要查询一个具体的字符串例如 'jjhshdglddiiiisssddddjjsssjjssjj' 中包含多少个 'ss'。我们可以通过以下逻辑步骤来实现:

第1步:确认目标子串的长度

首先,需要知道我们要查找的子串 'ss' 占据的字符长度。在MySQL中可以使用 LENGTH() 函数:

SELECT LENGTH('ss');

这里得到的结果是 2,因为 'ss' 由两个字符组成。

第2步:获取原字符串的总长度

查询原始字符串 'jjhshdglddiiiisssddddjjsssjjssjj' 的长度:

SELECT LENGTH('jjhshdglddiiiisssddddjjsssjjssjj');

第3步:使用 REPLACE 替换空字符并计算剩余长度

利用 REPLACE(original_string, search_string, replacement_string) 函数,将原字符串中的所有 'ss' 替换为 '' (空字符串),然后计算新字符串的长度。这一操作去除了所有的目标子串。

SELECT LENGTH(REPLACE('jjhshdglddiiiisssddddjjsssjjssjj', 'ss', ''));

第4步:计算长度差并除以子串长度

原字符串长度减去替换后的字符串长度,即为所有被替换掉的 'ss' 的总长度。将这个差值除以单个 'ss' 的长度,即可得到 'ss' 出现的次数。

第5步:综合 SQL 语句

将上述逻辑合并为一个完整的 SQL 查询。为了代码清晰,通常使用子查询来计算中间变量 diffCount(即长度差):

SELECT
    diffCount / ( LENGTH('ss') ) AS count_of_substring
FROM
    ( SELECT 
        ( LENGTH('jjhshdglddiiiisssddddjjsssjjssjj') - 
          LENGTH(REPLACE('jjhshdglddiiiisssddddjjsssjjssjj', 'ss', '')) 
        ) AS diffCount 
    ) tmp;

该查询返回的结果即为 'ss' 在指定字符串中出现的次数。

补充:应用于数据库表的实现方法

当需要统计表中某一列数据里包含特定子串的次数时,可以将上述逻辑应用到具体的字段名上。假设表名为 table_name,待查询的字段为 column_name,要查找的子串为 'pattern'。

一、直接查询表字段

直接使用 LENGTH 和 REPLACE 函数对表字段进行操作:

SELECT
    column_name,
    (
        LENGTH(column_name) - LENGTH(REPLACE(column_name, 'pattern', ''))
    ) / LENGTH('pattern') AS occurrence_count
FROM
    table_name
WHERE
    FIND_IN_SET(...) IS NOT NULL OR column_name LIKE '%pattern%';

注意:

  1. LENGTH() 函数返回的是字节数而非字符数。如果存储的是 UTF-8 多字节字符,且只涉及单字节ASCII搜索,结果正确;若涉及多字节字符,建议使用 CHAR_LENGTH() 以获取准确字符数量。
  2. 除数为零错误:确保 'pattern' 不是空字符串,否则会导致除以零错误。
  3. 过滤条件:建议在 WHERE 子句中加入简单的过滤条件(如 LIKE),以避免对不包含该子串的长文本进行不必要的计算,提升性能。

以上就是MySQL查询字符串中某子串出现次数的详细内容,更多关于MySQL字符串处理技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。