用Oracle中的like语句替换

问题描述 投票:0回答:2

我有一个名为syns的synonyms table,用于存储单词和现有的同义词。同样,还有另一个表称为subs,其中包含一个单词的word substitutions。这些表用于在名为institutions的主表中查找相似的值,该主表托管数据库中的现有名称。

目的是避免考虑同义词和单词替换的相似名称。用户提供了一个新的机构名称,在插入机构表之前,有多个查询用同义词和单词替换替换每个单词。例如,我有以下数据:

substitution word table:
WORD      SUBS_LIST
MOUNTAIN  MOUNTAIN, MOUNT, MT, MTN
VIEW      VIEW, VU
FORMULA   FORMULA, 4MULA
Synonym list table:
WORD    SYN_LIST
EDUCATION   SCHOOL, UNIVERSITY, COLLEGE, TRAINING
institutions table:
NAME
FORMULA VIEW UNIVERSITY
FOURMULAE VULCAN COLLEGE
4MULA VU CAFE

机构表包含数据库中所有现有的名称。然后,当接收到一个新名称时,用每个单词的相应同义词列表和单词替换来替换单词时就不必如此。例如,由于已有记录FORMULA VU SCHOOL,因此应在数据库中找到一个新名称,例如FORMULA VIEW UNIVERSITY

我创建了this fiddle来展示这个想法。但是,我没有得到任何结果。

谢谢

sql database oracle query-optimization sql-like
2个回答
0
投票

您能否确认我的理解搜索字符串“ FORMULA VU SCHOOL”的第一部分是“ FORMULA”,如果存在以“ FORMULA”开头的字符串,则需要在表机构中进行检查。在这种情况下,命中“ FORMULA VIEW UNIVERSITY”

然后取字符串的第二部分(“ VIEW”),并在表子中查找它。

然后取字符串的第三部分(“ UNIVERSITY”)并在表syns中查找它

之后,在“机构”表中找到的字符串将被翻译为>

FORMULA VIEW UNIVERSITY = FORMULA VIEW EDUCATION

由于我们正在寻找“ FORMULA VU SCHOOL”是否已经存在,以上述方式进行翻译时,我们会得到

FORMULA VU SCHOOL = FORMULA VIEW EDUCATION

并且由于这样的翻译记录已存在于Institution表中,因此该记录需要在预期输出中显示如下

Existing_column_value   search_string_value
FORMULA VIEW UNIVERSITY FORMULA VU SCHOOL

您能确认这是您要找的吗?


0
投票

以下功能似乎正常。它使用将逗号分隔的字符串之一拆分为单词技术,也可以应用其他方法。但是最好的办法是将数据模型更改为单个单词同义词,这样可以避免拆分,这可能是不可靠的。您可以在检查新条目时使用此功能,例如:

© www.soinside.com 2019 - 2024. All rights reserved.