【发布时间】:2023-02-07 04:52:54
【问题描述】:
我正在尝试在 SQL 中为分组创建一个 case 语句,但是我遇到了一个问题,如果有多个匹配项,它的分组就会不正确。
有没有一种方法可以逐字搜索而不是整个搜索并给出首先出现的单词的结果?
主题示例:
the animal rode in the car --- EXPECTED RESULT Animal
in the car the animal rode --- EXPECTED RESULT CAR... actual result Animal
CASE
WHEN Subject like '%animal%' then 'Animal'
WHEN Subject like '%car%' then 'Car'
END as Category
【问题讨论】:
-
它按顺序运行,将选择第一个命中,因此您需要另一个条件,例如位置
-
SQL SERVER 不能很好地处理字符串操作。您可能需要考虑比较职位。例如: CASE WHEN CHARINDEX('CAR',COL,1) > CHARINDEX('CAT',COL,1) THEN 'CAR' WHEN CHARINDEX('CAT',COL,1) > CHARINDEX('CAR',COL, 1)然后“猫”结束
-
检查我修改后的答案