我正在编写一个程序,对足球比赛和数据的数据库执行操作。我遇到的一个问题是我的源数据没有每个团队的一致命名。所以Leyton Orient可能会出现在L Orient。大多数情况下,这支球队被列为L Orient。所以我需要找到与团队名称最接近的匹配,因为它没有出现在我导入的数据中的数据库团队名称列表中。目前在我的数据库中,我有一个表'Team',其数据样本如下:
TeamID TeamName TeamLocation
1 Arsenal England
2 Aston Villa England
3 L Orient England
如果要导入的数据中出现“Leyton Orient”这个名称,我需要将其与L Orient相匹配并获取TeamID 3.我的问题是,在团队名称的情况下,我可以使用LIKE功能实现此目的吗?比数据库中的名称长? 我已经想到,如果我在桌子上有'Leyton Orient'并且正在导入'L Orient',我可以找到正确的条目:
SELECT TeamName FROM Team WHERE TeamName LIKE '%l%orient%';
但我可以反过来这样做吗?另外,我可以有像曼联这样的例子,我想要导入Man Utd。我可以通过在每个字符之间加上%符号来找到这个:
SELECT TeamName FROM Team WHERE TeamName LIKE '%M%a%n%U%t%d%';
但是有更好的方法吗?
最后,这可能更好地放在另一个问题中,我不想在重复命名团队的方式时搜索正确的团队,即我想为团队存储替代拼写/别名为了快速找到正确的团队参赛作品。任何人都可以建议我如何处理这个问题?感谢
答案 0 :(得分:1)
您正在寻找的解决方案是FULL TEXT SEARCH
,它需要您的DBA创建全文索引,但是,一旦您在那里执行比字符模式匹配更强大的搜索。
正如其他人所建议的那样,你也可以只有一个Alias
表,其中包含团队名称和引用的所有可能形式。根据您的搜索工作方式,这可能是阻力最小的路径。
答案 1 :(得分:0)
最后,这可能更好地放在另一个问题中,我不想在重复命名团队的方式时搜索正确的团队,即我想为团队存储替代拼写/别名为了快速找到正确的团队参赛作品。任何人都可以建议我如何处理这个问题?感谢
我个人有一个team
表和一个teamalias
表。利用关系将他们结婚。
答案 2 :(得分:0)
我认为防止这种情况的最佳方法是在下拉列表中显示一个团队名称列表。这也可以让你删除团队名称的验证。用户现在只能选择一个团队名称,并且还可以使您在数据库中工作变得更加容易。然后,您可以查找数据库中显示的确切团队名称。即:
SELECT TeamName FROM Team WHERE TeamName = [dropdownlist_name];