You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL查询:如何找出字符串中位置相同的重复字符

解决方法

假设你的表名为test_table,存储字符串的列名为str_val,可以用以下SQL查询找出所有位置相同且字符一致的内容:

通用SQL方案(适用于支持递归CTE的数据库:MySQL 8+、PostgreSQL、SQL Server等)

WITH RECURSIVE pos AS (
    -- 初始化第一个位置
    SELECT 1 AS position
    UNION ALL
    -- 递归生成后续所有位置,直到字符串长度
    SELECT position + 1 
    FROM pos 
    WHERE position < (SELECT LENGTH(str_val) FROM test_table LIMIT 1)
)
SELECT 
    p.position AS 字符位置,
    SUBSTRING(t.str_val, p.position, 1) AS 一致字符
FROM pos p
CROSS JOIN test_table t
GROUP BY p.position
-- 筛选出该位置所有字符都相同的记录
HAVING COUNT(DISTINCT SUBSTRING(t.str_val, p.position, 1)) = 1;

代码说明

  • 递归CTE pos 自动生成从1到字符串总长度的所有位置编号,无需手动指定长度(如果字符串长度固定,也可以直接用数字序列代替,比如SELECT 1 UNION SELECT 2 ... UNION SELECT 11)。
  • SUBSTRING(t.str_val, p.position, 1) 用于提取每个字符串在对应位置的单个字符。
  • 通过GROUP BY按位置分组,COUNT(DISTINCT ...)判断该位置的字符是否唯一(即所有行的字符都一致),等于1时保留该位置。

针对你的示例数据

执行上述查询后,会得到如下结果:

字符位置一致字符
6A
10B

内容的提问来源于stack exchange,提问作者PitaChan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:55:18