在 Oracle 中按字符串过滤数据

问题描述 投票:0回答:1

在表tab1中,有如下数据。

Col1   Col2  Message (Value can be concatenation of multi messages string after "Hello there" can vary)
-----------------------------------------------------------
I1     L1    Message1|Message2|Hello there D1,D2,D3
I2     L2    Message1|MessageN|Hello there D3,D4,D1
I3     L3    Hello there D3,D5
I4     L4    Message3|Message4
I5     L5    Hello there DN,DN+1

我只需要选择带有“Hello There”字符串的记录,而不选择其他消息,如消息 1,2 .. N 等(仅应选择第三条和第五条记录)

任何人都可以帮助提供有效的方法吗? 我正在尝试如下所示,但它没有给出预期的结果。

select * from tab1 t1 where message like '%Hello there%' 
and not exists (select 1 from tab1 t2 where t1.col1=t2.col1 and t1.col2 =t2.col2 and ???)
regex oracle plsql
1个回答
0
投票

这就是为什么你没有得到任何结果:

and not exists (select 1 from tab1 t2 where t1.col1=t2.col1 and t1.col2 =t2.col2 and ???)

您选择的是数字1;该声明将永远正确,这意味着它将永远存在。由于您要选择“不存在”时的消息,因此它不会获取任何数据。

© www.soinside.com 2019 - 2024. All rights reserved.