【发布时间】:2015-09-17 23:47:58
【问题描述】:
我有一个具有唯一 ID 和竞赛名称的 sql 数据库,例如:
ID CompetitionName
1 August Running Race
2 Running Race August
3 Running Race August
4 Running Race August.
5 Cycling Race
6 Cycling Race September
请注意,即使 CompetitionName 相同,每一行都有自己的 ID。
然后我有一个文件,可以使用规则将这些比赛名称合并到合理的组中。规则可以是“等于”或“包含”。包含规则意味着如果上表中的 CompetitionName 以任意顺序包含“RuleA”下的内容和“RuleB”下的内容(如果 RuleB 不为空),那么我们应该为新表使用该 CompetitionName 和 ID,并且在第三列(竞赛)下应将竞赛条目从下方放置。对于 equals 规则,标题必须与 RuleA 完全匹配。
RuleType RuleA RuleB Competition
Contains Running Race August August Running Race
Equals Cycling Race September Cycling Race
所以我想要的输出是:
ID CompetitionName Competition
1 August Running Race August Running Race
2 Running Race August August Running Race
3 Running Race August August Running Race
4 Running Race August. August Running Race
5 Cycling Race September Cycling Race
9 月自行车比赛不包含在此新表格中,因为它不符合任何规则。
在我目前拥有的代码中,我使用 like 语句一次执行一个规则:
select ID
from table1
where
(CompetitionName LIKE '%Running Race%' and CompetitionName LIKE '%August%')
但是,我想从表格中自动获取这些规则,而不是将它们输入出来,并且在规则适用时还从第二个表格中获取相应的竞赛条目,因此我们为这些条目使用标准竞赛名称。我将如何解决这个问题?如果您对解决其中的一部分有任何想法,也请告诉我,因为这是可以构建的。
【问题讨论】:
-
rules是数据库中的表吗? -
还没有,但可以很容易地添加它
标签: sql sql-server-2008 sql-like