mysql - SQL 计算列值包含字符串的行数
问题描述
我想计算某个列在列值中有子字符串的行数。
这不起作用
select count(column_name like '%substring%')
from table_name
示例:我想计算包含“否”的行
column_name
-----------
noa
noit
yot
预期结果:2
因为 'no' 是 'noa' 和 'noit' 中的子串。
解决方案
使用case
表达式:
select sum(case when column_name like '%substring%' then 1 else 0 end)
from table_name ;
或者,如果这是您想要的唯一值,请使用过滤和count(*)
:
select count(*)
from table_name
where column_name like '%substring%';
当查询中有其他列时,第一个更合适。
我应该注意到,SQL 标准有另一种方法来实现这一点,使用filter
:
select count(*) filter (where column_name like '%substring%')
from table_name ;
但是,大多数数据库不支持这种语法。
推荐阅读
- php - Symfony EventSubscriber 使用 KernelEvents 抛出偏移 0 错误
- android - Android studio RecyclerView onCreateViewHolder 布局膨胀好慢
- google-api - 谷歌日历事件插入 HTTP 消息格式?
- mysql - 从具有重复列的相关表中选择数据
- javascript - 在 Javascript 中创建自定义循环
- opengl - OpenGL平面着色光照着色器问题
- python - 将数组列从 PySpark 数据帧导出到 csv 而不进行格式化
- linux - 由于注释中的分号,hosts.allow 中的错误
- excel - 两个数据集之间的 Excel 条件格式
- mysql - MySQL 中是否有一个函数可以在表达到某个值时截断表,比如 100MB?