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

SQL在具有匹配字符串但顺序不同的表中查找某些名称/标题,sql,Sql,我有一个包含手动输入数据的表。每次用户在系统中创建“规则”并为其选择名称时,它都会这样保存。因此,两条规则的含义相同,作用相同,但名称略有不同。例如: 规则1: 在美国、欧盟和日本销售的汽车 规则2: 在欧盟、日本和美国销售的汽车 规则3: 在欧盟、美国、日本、MX和GE销售的汽车 我要做的是在这数千条规则中找到某些模式。这样地: 查找已在美国、欧盟和日本销售的汽车 现在,结果应该显示规则1和规则2。两者的名称中都包含相同的信息,只是顺序不同。规则3也包含这些信息,但也包含MX和GE等其他国家的

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

规则1: 在美国、欧盟和日本销售的汽车

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

规则3: 在欧盟、美国、日本、MX和GE销售的汽车

我要做的是在这数千条规则中找到某些模式。这样地: 查找已在美国、欧盟和日本销售的汽车

现在,结果应该显示规则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%'

非常感谢。谢谢你

作为第一步,我认为您需要将
规则_Name
转换为一组标志,否则您的where子句将是一组大量的like和方括号:)

i、 e


一旦您将规则分解为它们的组成部分,查询应该会变得更容易。

您可以添加规则是如何定义/输入到它们的实际表中的吗?我认为您需要在in子句中创建一个唯一国家代码的列表,但如果看不到规则的结构,就很难知道。理想情况下,应用程序逻辑可以防止创建顺序不同的不同规则,但这是另一回事?博士后?Oracle?我在用sybase。我希望避免说出所有可能的国家代码,因为这只是一个例子。还有其他代码,谢谢。但是我拿着旗子会去哪里呢?我想我需要检查相关标志=1?在where子句中如何使用这些标志?如果我键入InUSFlag=0,我将得到一个错误…谢谢:)
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