如何查找包含部分相似字符串的 2 列

How to find 2 columns contain partial similar string

提问人:Lital 提问时间:10/4/2023 最后编辑:LittlefootLital 更新时间:10/4/2023 访问量:40

问:

我有 2 列(Location 和 Name),我需要找出两者是否有相似的字符串。 我正在尝试获取一个新列,如果有匹配项,则返回 1,如果根本没有匹配项,则返回 0。 下面是我的数据和我需要的列的示例:

|   Location   |     Name     | Result  |
|:-----------: |:------------:|:-------:|
| Sherman Oaks | Oaks         | 1       | 
|Beverly drive | Sherman way  | 0       |             
|Hollywood Blvd| Hollywood    | 1       |
|  3rd Street  |    Main      | 0       |
|   Ventura    |   Park Ave   | 0       |
| Palm Springs |     Null     | 0       |
SQL 字符串 PLSQL

评论

0赞 NickW 10/4/2023
嗨 - 1) 请不要在您的问题中使用图像,使用可编辑的文本,以便有人想尝试解决方案时可以复制它 2) 您对“相似”的定义是什么 - 它是否区分大小写,您只是匹配单词还是匹配字符串?字符串需要多长时间才能匹配,等等?

答:

0赞 Littlefoot 10/4/2023 #1

对于您发布的示例数据和所需的结果,这可能是一个选项:检查是否存在,反之亦然。如果是这样,result = 。locationname1

但请注意,可能存在误报甚至漏报;为了避免它们,请尝试提出导致预期结果的精确规则。

SQL> select location, name,
  2    case when instr(location, name) > 0 or
  3              instr(name, location) > 0
  4         then 1
  5         else 0
  6    end result
  7  from test;

LOCATION             NAME            RESULT
-------------------- ----------- ----------
Sherman Oaks         Oaks                 1
Beverly drive        Sherman way          0
Hollywood Blvd       Hollywood            1
3rd Street           Main                 0
Ventura              Park Ave             0
Palm Springs                              0
Sherman Oaksland     Oaks                 1 -> false positive? (substring match)
Sherman Way          way                  0 -> false negative? (case sensitivity)

8 rows selected.

SQL>