【发布时间】:2022-01-28 05:17:39
【问题描述】:
我正在尝试根据主要项目来组合一些相关项目。
例如,假设我有一个非常简单的 [FRUIT] 表:
| ID | NAME |
|---|---|
| 1 | Fuji Apples |
| 2 | Apple: Golden Delicious |
| 3 | Granny Smith Apple |
| 4 | Blood Orange |
| 5 | Orange: Mandarin |
并且用户当前正在查看“Fuji Apples”。我想返回“Apple:Golden Delicious”和“Granny Smith Apple”的行,因为它们的 [Name] 列的值中也包含“Apple”一词。我想我正在寻找类似 LIKE 的东西,它对字符串进行更广泛的比较,看看是否有任何相似的字符集。
我查看了 SOUNDEX 和 DIFFERENCE,但它们不是我想要的,因为我的字符串太长了,类似的词可能位于字符串中的任何位置。
如果没有什么问题,如果需要,我总是可以实现一些相似性算法;但如果 t-sql 已经内置,我不想付出努力。
注意:我知道在上面的示例中,只添加另一个具有“Apple”和“Orange”值的列和/或表会更有意义;但这不是我要问的。
【问题讨论】:
-
提问时,您需要提供minimal reproducible example: (1) DDL 和样本数据填充,即 CREATE 表和 INSERT T-SQL 语句。 (2) 你需要做什么,即逻辑和你的代码尝试在 T-SQL 中实现它。 (3) 期望的输出,基于上述#1 中的样本数据。 (4) 您的 SQL Server 版本 (SELECT @@version;)。
-
听起来你应该有一个“关键字”表,然后是一个连接表来链接你上面的数据和你的关键字。然后,您可以返回共享 1 个或多个关键字的任何其他行。
-
全文搜索结合
semanticsimilaritytable可能会得到你想要的,请参阅docs.microsoft.com/en-us/sql/relational-databases/…
标签: sql sql-server database tsql sql-server-2012