字符串内的子串

iom*_*tin 4 oracle

假设这是我的表:

ID  STRING
1   'ABC'
2   'DAE'
3   'BYYYYYY'
4   'H'
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢!

Fra*_*s P 5

@ABCade:很好的解决方案,但可以没有任何distinct也没有join.

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

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

看小提琴.