mysql - 计算字符串中两个或多个重复字符的数量

标签 mysql sql

我有这样的表:

-----------
ID | Value
-----------
1  | AAAA
2  | ABCD
3  | AADC
4  | ABBD

我试图弄清楚如何返回字符串在每个值中出现的次数。

所以,如果我想计算'A'和'B'出现的时间,sql语句将像这样返回:

-------------------
ID | Value | Count
------------------- 
1  | AAAA  |   0 
2  | ABCD  |   1 
3  | AADC  |   0 
4  | ABBD  |   2 
5  | ABBB  |   3 
6  | AABB  |   3 
7  | AAAB  |   3

有什么办法可以做到这一点吗?我不想使用php、vb等,只要MySQL

最佳答案

似乎您想对值进行计数,然后合并结果。我相信这样的事情会对你有用。

SQLFiddle

SELECT 
    id,
    value,    
    ROUND (   
        (
            LENGTH(value)
            - LENGTH(REPLACE(value, "A", "")) 
        ) / LENGTH("A")        
    ) AS count    
FROM chars
UNION ALL
SELECT 
    id,
    value,    
    ROUND (   
        (
            LENGTH(value)
            - LENGTH(REPLACE(value, "B", "")) 
        ) / LENGTH("B")        
    ) AS count    
FROM chars

关于mysql - 计算字符串中两个或多个重复字符的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29932325/

相关文章:

mysql - 制表符表不呈现某些列值。想知道为什么?

javascript - 使用导致错误 SQL 语法的变量添加限制

mysql - Jboss Messaging (jbm_tx) 表不断增长

sql - 插入并返回子查询

sql - 这个存储过程对 sql 注入(inject)安全吗?

php - 提高查询速度 Ionic/Laravel 发布请求

php - 使用 GROUP BY 和 count 优化 MySQL 查询结果中的顺序

javascript - 防止 JavaScript/Node.js 中的 SQL 注入(inject)

sql - Postgres 外键链

C# 更改 DataGridView 中的列标题