oracle - 字符串内的子字符串

标签 oracle

假设这是我的表:

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

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

例如,12有一个 A共同点和1广告 3有一个 B共同点,但 4与任何其他行没有任何共同的字符。所以我的查询应该只返回前三行。

我不需要知道它与哪一行匹配。

谢谢!

最佳答案

@A.B.Cade:很好的解决方案,但可以在没有任何 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, '.[]', '\.\[\]')||']')
)

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

See fiddle.

关于oracle - 字符串内的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12922889/

相关文章:

sql - Oracle - 按百分比限制 Row_number()

python - 使用 zxJDBC 调用过程时参数数量或类型错误

python - 使用 cx_Oracle 从 Python 连接到 Oracle 时出错

windows - Linux 上的 Oracle 数据库

sql - 排序时间戳日期的两个 sql

oracle - 列出包含 `clob` 或 `blob` 或 `lob` 列的表名

oracle - Oracle 序列存储在哪个表空间中?

mysql - 错误 1045 (28000) : Unknown error 1045

oracle - 从 oracle 转储文件中导入特定表?

java - ORA-00920 : | unabale to set INTERVAL via ibatis