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.

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注