首页 百科 oracle – 字符串内的子串

oracle – 字符串内的子串

假设这是我的表:

ID  STRING
1   'ABC'
2   'DAE'
3   'BYYYYYY'
4   'H'

我想在另一行的STRING变量中选择STRING列中至少有一个字符的所有行.

例如,1和2具有共同的A,1和3具有共同的B,但是4与任何其他行没有任何共同的字符.所以我的查询应该只返回前三行.

我不需要知道它匹配的是哪一行.

谢谢!

解决方法

@ A.B.Cade:很好的解决方案,但可以在没有任何明显或加入的情况下完成.

SELECT * FROM test t1
WHERE EXISTS
(
  SELECT * FROM test t2
  WHERE t1.id<>t2.id AND
  regexp_like(t1.string,'['|| replace(t2.string,'.[]','\.\[\]')||']')
)

查询不会将字符串与额外的行进行比较,因为只要找到当前行的1个匹配项,它就会停止比较…

See fiddle.

关于作者: dawei

【声明】:佛山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

热门文章