计算sqlite中匹配的值
我想计算数据中的匹配值,如(表1) 下面的查询计算sqlite中匹配的值,sql,sqlite,Sql,Sqlite,我想计算数据中的匹配值,如(表1) 下面的查询 Select * from table1 where subject like ‘%english%’ or subject like ‘%stat%’ 返回前两行: 但我还需要计算匹配的值,如下面的输出 count 1 2 0 (因为第一行中只有一个值匹配,第二行中有两个匹配,第三行中没有匹配) 我可以得到所需的输出吗?您可以尝试对检查每个条件的大小写表达式求和: SELECT subject, CASE WHE
Select *
from table1
where subject like ‘%english%’ or
subject like ‘%stat%’
返回前两行:
但我还需要计算匹配的值,如下面的输出
count
1
2
0
(因为第一行中只有一个值匹配,第二行中有两个匹配,第三行中没有匹配)
我可以得到所需的输出吗?您可以尝试对检查每个条件的
大小写
表达式求和:
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;
SQLite分别为
true
和false
验证返回布尔值的条件,因此您可以这样做:
select *,
(subject like '%english%')
+
(subject like '%stat%') as count
from table1
非常感谢。我明白了。请再帮我一个忙。我还可以计算不匹配的值,如输出计数(2,1,3)(因为在第一行中有两个值不匹配,在第二行中有一个不匹配,在第三行中没有匹配)。@taliafrasat检查我的更新答案以了解执行此操作的方法。是。。但是为什么要加+1呢?它会给出输出计数(3,2,4)…但是如果没有+1,我会得到完全相同的输出计数(2,1,3)。我会在删除所有空格之前和之后计算
主题的长度。假设主题是一个单词,这个差异将为零,但是因为我们知道确实有一个单词,我们需要+1
作为偏移量。我也可以得到不匹配的内容或值,如列名称(数学计算机、计算机、化学物理生物)?请再帮我一个忙。我还可以计算不匹配的值,如输出计数(2,1,3)(因为第一行中有两个值不匹配,第二行中有一个不匹配,第三行中没有匹配)
select *,
(subject like '%english%')
+
(subject like '%stat%') as count
from table1