Databricks sql,如何比较字符串转义字符

Databricks sql, how to compare string escaping characters

我正在分析两列以过滤看起来不相似的记录:

select firstname, name 
from tableA
where lower(firstname) != lower(name)

我接受匹配的名称,即使很少有特殊字符不匹配,例如:

Databricks 的这两个名称被认为是不同的(这是正确的),但我想转义“-”字符。 有没有办法说'look for different names without considering the '-'性格'? 或者也许是一种获取两个字符串差异程度的索引的方法。

有几种方法:

  • 在比较之前对字符串进行规范化 - 小写或大写字符串,用单个 space 替换所有字符,如 -、多个 spaces 等 - 你可以使用regexp_replace function 为此。像这样:
select firstname, name 
from tableA
where 
  regex_replace(lower(firstname), '[- ]+', ' ') != 
    regex_replace(lower(name), '[- ]+', ' ')

可以通过为该规范化创建 user-defined SQL function 来进一步简化。

select firstname, name 
from tableA
where levenstein(lower(firstname), lower(name)) != 0