MYSQL 计算某些值作为值存在于表的字段中的次数

Posted

技术标签:

【中文标题】MYSQL 计算某些值作为值存在于表的字段中的次数【英文标题】:MYSQL count how many times SOME value is exist as value in a field of table 【发布时间】:2017-06-12 01:42:07 【问题描述】:

mysql 检查 some 值是否作为值存在于表的字段中

我有一个带有字段的表 A: id      名称     值 1       项目 1      822 2       项目 2      658 3       项目 3      321

我正在努力解决这个问题: 我想计算一个字段中存在多少次值 示例: 如果我要搜索 2 和 8,那么

结果是: 第 1 行的计数为 3(因为它有两个 2 和一个 8) 第 2 行的计数为 1(因为它有一个 8 数字) 第 3 行的计数为 1(因为它有一个 2 数字)

【问题讨论】:

列值的数据类型? (可怕的列名...) 值的数据类型是varchar,不关心列名,只是例子 How to count instances of character in SQL Column的可能重复 不,不一样,我问的是如何计算 2 个值,你给的链接只计算一个字段中的 1 个值 omg,对不起,我错过了,我错了,我会编辑它 【参考方案1】:
select id, case when value like '%2%' then 1 else 0 end +
               case when value like '%8%' then 1 else 0 end
from tablename

【讨论】:

【参考方案2】:

您可以使用replace()length()(或char_length())来做到这一点:

select (length(value) - length(replace(replace(value, '2', ''), '8', ''))) as num_occurrences
from t;

【讨论】:

等等.. 我认为你的答案更好@Gordon Linoff,因为使用你的代码,如果值为 2828,它将计为 4,很好 @Ridho,你说你想要第 2 行的第 1 行 (822),因为它有 8 和 2。你改变主意了吗?

以上是关于MYSQL 计算某些值作为值存在于表的字段中的次数的主要内容,如果未能解决你的问题,请参考以下文章

区分 json 中不存在字段的时间和将其值作为 null 发送的时间

mysql默认值问题(高分!!!)

如何计算某些值在 SQL 表中出现的次数并在列中返回该数字?

mysql如何更新一个表中的某个字段值等于另一个表的某个字段值

SQL语句 一个表的值与另一个表的字段一致,怎么把两一个表的值作为条件,限定查询的字段

thinkphp中的lock与mysql的for update的使用注意事项