计算sqlite中的匹配值

时间:2019-05-21 10:15:40

标签: sql sqlite

我想计算(table1)中的数据中的匹配值

name    id  subject
maria   01  Math computer english
faro    02  Computer stat english
hina    03  Chemistry physics bio

以下查询

Select *
from table1
where subject like ‘%english%’ or 
      subject like ‘%stat%’

返回前两行:

但是我还需要计算匹配的值,如下面的输出

count
1
2
0

(因为在第一行中只有一个值匹配,在第二行中有两个匹配项,而在第三行中没有任何匹配项。)

我能得到想要的输出吗?

2 个答案:

答案 0 :(得分:2)

您可以尝试对CASE个表达式求和,以检查每个条件:

SELECT
    subject,
    CASE WHEN subject LIKE '%english%' THEN 1 ELSE 0 END +
    CASE WHEN subject LIKE '%stat%' THEN 1 ELSE 0 END AS count
FROM 
    yourTable;

如果您想统计每个主题中与两个关键字之一不匹配的单词数,可以尝试:

SELECT
    subject,
    LENGTH(subject) - LENGTH(REPLACE(subject, ' ', '')) + 1 -
    ( subject LIKE '%English%' ) - ( subject LIKE '%stat%' ) AS count
FROM yourTable;

enter image description here

Demo

答案 1 :(得分:1)

SQLite验证条件,分别返回10的{​​{1}}和true的布尔值,因此您可以这样做:

false