我正在分析两列以过滤看起来不相似的记录:
select firstname, name
from tableA
where lower(firstname) != lower(name)
即使少数特殊字符不匹配,我也接受匹配的名称,例如:
Databricks 的这两个名称被认为是不同的(正确的),但我想逃避那个“-”字符。有没有办法说'寻找不同的名字而不考虑'-'字符'?或者也许是一种获取两个字符串不同程度的索引的方法。
我正在分析两列以过滤看起来不相似的记录:
select firstname, name
from tableA
where lower(firstname) != lower(name)
即使少数特殊字符不匹配,我也接受匹配的名称,例如:
Databricks 的这两个名称被认为是不同的(正确的),但我想逃避那个“-”字符。有没有办法说'寻找不同的名字而不考虑'-'字符'?或者也许是一种获取两个字符串不同程度的索引的方法。
有几种方法:
-
用单个空格替换所有字符,如 , 多个空格等 - 你可以使用regexp_replace 函数。像这样的东西:select firstname, name
from tableA
where
regex_replace(lower(firstname), '[- ]+', ' ') !=
regex_replace(lower(name), '[- ]+', ' ')
可以通过为该规范化创建用户定义的 SQL 函数来进一步简化它。
select firstname, name
from tableA
where levenstein(lower(firstname), lower(name)) != 0