微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Teradata SQL中如何根据复杂的条件在Teradata SQL中选择行?

如何解决Teradata SQL中如何根据复杂的条件在Teradata SQL中选择行?

我在 teradata sql 中有如下表:

Find:    ^(.).(.*)$
Replace: $1-$2

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

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

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

col1        col2 
Jan Kowal  | Jan Kowal PHU
Bravo JohN | GB John BraVo
Ann Still  | Ronald G
  • 因为两行都有来自 col1 的值 + col2 中更多(之前或之后)的值
  • 字母大小写 = False
  • name 和 surname 并且可以交换

解决方法

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。