通过MySQL统计字符串中的出现次数

通过MySQL统计字符串中的出现次数,mysql,sql,Mysql,Sql,我想计算“diagnosis”列中字符串的出现次数 我现在所做的就是这样——它得到了我所需要的结果 SELECT COUNT(*), diagnosis FROM patients WHERE diagnosis like "%OS1%" UNION SELECT COUNT(*), diagnosis FROM patients WHERE diagnosis like "%OS2%" ... and so on 有时在我的表中,字符串可能出现两次(例如,OS1、OS2),我想计算字符串

我想计算“diagnosis”列中字符串的出现次数

我现在所做的就是这样——它得到了我所需要的结果

SELECT COUNT(*), diagnosis
FROM patients
WHERE diagnosis like "%OS1%"
UNION

SELECT COUNT(*), diagnosis
FROM patients
WHERE diagnosis like "%OS2%"

... and so on
有时在我的表中,字符串可能出现两次(例如,OS1、OS2),我想计算字符串的每次出现次数


我认为在另一种语言中这将是一项非常简单的任务,但我想用纯SQL来完成。

将OS1-OS6和CH1-CH6值放在diagn表中<代码>加入和
分组依据

SELECT COUNT(*), d.diagnosis
FROM patients p
RIGHT JOIN diagn d
   on p.diagnosis like concat('%', d.diagnosis, '%')
group by d.diagnosis

将OS1-OS6和CH1-CH6值放入诊断表中<代码>加入和
分组依据

SELECT COUNT(*), d.diagnosis
FROM patients p
RIGHT JOIN diagn d
   on p.diagnosis like concat('%', d.diagnosis, '%')
group by d.diagnosis
您也可以尝试以下方法:

SELECT COUNT(*), diagnosis
FROM patients
GROUP BY diagnosis;
您也可以尝试以下方法:

SELECT COUNT(*), diagnosis
FROM patients
GROUP BY diagnosis;

不确定这是否有效

SELECT COUNT(*) 
FROM patients 
WHERE REGEXP_LIKE(diagnosis, "(OS[1-6]|CH[1-6])")
如果您感兴趣,也可以查看下面的链接。但不确定这是否是您要找的:

不确定这是否有效

SELECT COUNT(*) 
FROM patients 
WHERE REGEXP_LIKE(diagnosis, "(OS[1-6]|CH[1-6])")
如果您感兴趣,也可以查看下面的链接。但不确定这是否是您要找的:

如何知道要搜索哪些OS1、OS2等值?字符串仅限于OS1-OS6和CH1-CH6将这些值放在一个单独的(临时)表中并与之连接!如何知道要搜索哪些OS1、OS2等值?字符串仅限于OS1-OS6和CH1-CH6将这些值放在一个单独的(临时)表中并与之连接!那个修好了!谢谢!如果你觉得答案有用,请单击向上箭头将其标记为有用。该答案修复了它!谢谢!如果您觉得答案有用,请单击向上箭头将其标记为有用。