SQL在表中找到具有匹配字符串但顺序不同的某些名称/标题

时间:2014-05-21 06:58:35

标签: sql

我有一个包含手动输入数据的表格。每当用户在系统中创建“规则”并为其选择名称时,它就会像这样保存。因此,两个规则可以表示相同,并且相同,但名称略有不同。例如:

规则1: 汽车在美国,欧盟和日本出售

规则2: 汽车在欧盟,日本和美国销售

规则3: 汽车在欧盟,美国,日本,墨西哥和通用电气销售

我要做的是在成千上万的规则中找到某些模式。像这样: 查找已在美国,欧盟和日本销售的汽车。

现在结果应该显示规则1和规则2.两者在名称中包含相同的信息,只是以不同的顺序。规则3也包含这些信息,但也包含MX和GE等其他国家/地区,因此不应将其考虑在内。

到目前为止,我有一个SQL,它找到了规则1和规则2,但也找到了规则3,我无法弄清楚如何告诉该机器我不希望任何其他规则在其名称中包含我的字符串其他信息。

select RULE_NUM, RULE_NAME from TB_RULE 
where RULE_NAME like '% Cars sold in%'
and RULE_NAME like '%US%'
and RULE_NAME like '%EU%'
and RULE_NAME like '%JP%'

非常感谢。欣赏它!!

1 个答案:

答案 0 :(得分:0)

我认为你需要将Rule_Name转换成一组标志,作为第一步,否则你的where子句就会成为一大堆喜欢和括号:)

select Rule_Name
   , CarsSoldFlag = case when Rule_Name like '%Cars sold in%' then 1 else 0 end
   , InUSFlag = case when Rule_Name like %US% then 1 else 0 end
   , InJPFlag = case when Rule_Name like %JP% then 1 else 0 end
   ...etc

一旦您将规则细分为组件位,查询就会变得更容易。