请看一下这个简单的SQL服务器数据库:
我想要的是,我想创建一个只有3列的摘要,这是代码:
select ProductID, Name,
*code* as CountString
from product
where Name in ('this', 'is', 'count', 'example')
我希望结果有3列,而“CountString”列是匹配的字符串总数('this','is','count','example')。这是我想要的结果:
因此,例如,我希望ProductID 1的Countstring为4,因为它包含所有4个单词。
如果你能解决这个问题,那就太棒了!
答案 0 :(得分:3)
如果我理解正确:
select ProductID, Name,
( (case when Name like '%this%' then 1 else 0 end) +
(case when Name like '%is%' then 1 else 0 end) +
(case when Name like '%count%' then 1 else 0 end) +
(case when Name like '%example%' then 1 else 0 end)
) as CountString
from product;
注意:任何有“this”的Name
也有“是”。
如果“单词”由空格(仅空格)分隔,则可以执行以下操作:
select ProductID, Name,
( (case when concat(' ', Name, ' ') like '% this %' then 1 else 0 end) +
(case when concat(' ', Name, ' ') like '% is %' then 1 else 0 end) +
(case when concat(' ', Name, ' ') like '% count %' then 1 else 0 end) +
(case when concat(' ', Name, ' ') like '% example %' then 1 else 0 end)
) as CountString
from product;
答案 1 :(得分:0)
以下查询应该满足您的需求---
SELECT PRODUCTID,
NAME,
REGEXP_COUNT(NAME, 'this|is|count|example', 1, 'c') CountString
FROM product;
此查询将导致"区分大小写"检查,仅表示"示例"将不计算"示例"。如果你想要" Case Insensitive"检查刚刚放入' i'而不是' c'。