【发布时间】:2021-04-16 05:18:43
【问题描述】:
我必须比较两列,并且只能提取字符串之间甚至没有部分匹配的行。比如我有这张表:
| Col1 | Col2 |
|---|---|
| John Smith | John Smith ltd |
| Pepper Row | Whatever Pepper |
| red | Blue |
过滤后我应该看到的唯一一行是最后一行:
| Col1 | Col2 |
|---|---|
| red | Blue |
我找到了一个答案here,它显示了部分匹配的结果。我尝试使用NOT LIKE 将其修改为仅返回 0 个匹配项,但没有成功。
【问题讨论】:
-
'Blue' 和 'Red' 都有字母'e',为什么不是“匹配”?什么是匹配,什么不是?如果一个是'John Smith ltd'而另一个是'Jane Grey Limited'你会期望'ltd'和'Limited'匹配吗? -
匹配是整个单词,而不是单个字母。我不指望有限公司。并且仅限于匹配。
-
一个单词的缩写不算匹配?您可以在其中添加标点符号,例如
.或,?'Jane Smith's和'John Smith'之类的呢?他们都是'Smith'。 -
嗯,我提供的链接将显示诸如您的示例之类的行,我会看到这些是不同的公司。并将评估该怎么做。但在我的情况下,我要么有类似
'John Smith'、'John Smith Ltd'的相似性,要么有完全不同的类似:'Apple inc'、'Pear ltd'。我想展示后者,因为在我的情况下,它会指出更新不起作用的地方。
标签: sql sql-server string-matching