我一直在搜索网站上的一些指导,但找不到合适的东西。我想知道是否有一种方法可以选择“ A列字符串中的任何单词与B列字符串中的任何单词都匹配”的行?我正在使用postgresql。
ID | Name | Name_of_kin
1 | Peter Reeves | John Reeves
2 | Emily Sanchez | Roger James
3 | Rico van Der | Moses van Fel
4 | Monic | Monica
5 | Michaelangelo | Michael
在这种情况下,我想选择中的任何单词Name_of_kin
匹配中的任何单词的行Name
。我希望达到的结果是:
ID | Name | Name_of_kin
1 | Peter Reeves | John Reeves
3 | Rico van Der | Moses van Fel
提前非常感谢您!
您可以将每个字符串变成一个单词,然后检查它们是否重叠:
select t.*
from mytable t
where string_to_array(t.name, ' ') && string_to_array(t.name_of_kin, ' ')
id | 名称| 亲属名字 -:| :----------- | :------------ 1 | 彼得·里夫斯| 约翰·里夫斯 3 | Rico van Der | 摩西·范·费尔
在Snowflake中,您可以这样写:
select t.*
from mytable t
where array_overlap(split(t.name, ' '), split(t.name_of_kin, ' '))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句