-1

我在 Teradata SQL 中有如下表:

col1        col2 
Jan Kowal  | Jan Kowal PHU
Bravo JohN | GB John BraVo
Ann Still  | Ronald G

我只需要从上表中选择这些行,其中:

  1. 在 col2 中是 col1 的值 + 更多的东西(没关系之前或之后)
  2. 请注意,Jan Kowal 和 Kowal Jan 是姓名和姓氏,可以交换
  3. Case = False(不管字母是高还是小)

所以我只需要选择第一行和第二行:

col1          col2
Jan Kowal  | Jan Kowal PHU
Bravo JoHN  | GB John BraVo  
  • 因为两行都具有来自 col1 的值 + col2 中的更多内容(之前或之后)
  • 字母大小写 = False
  • name 和 surname 可以交换
4

1 回答 1

0

您将第一列描述为具有“名称”和“姓氏”,这意味着它恰好具有两个组件。

对于这个问题,strtok()可以帮助:

where regexp_instr(col2, strtok(col1, ' ', 1), 'i') and
      regexp_instr(col2, strtok(col1, ' ', 2), 'i')

我在这里使用了正则表达式,因为它更容易修改你想要考虑的单词边界。你的问题不清楚这是否有必要。

于 2021-07-10T11:25:18.100 回答