我想查询一个我正在与正则表达式进行比较的表,然后在这些结果中我想过滤掉任何以 999 开头的结果
这是我的查询,但这没有返回结果:
Select * FROM my_table
WHERE REGEXP_LIKE(my_row, '[a-zA-Z]')
AND my_row NOT LIKE '999%'
有什么想法我会出错吗?我知道我应该得到几个结果。
示例日期如下...
my_row
______
12345
45673
G12354
1234B
999RT
我想查询一个我正在与正则表达式进行比较的表,然后在这些结果中我想过滤掉任何以 999 开头的结果
这是我的查询,但这没有返回结果:
Select * FROM my_table
WHERE REGEXP_LIKE(my_row, '[a-zA-Z]')
AND my_row NOT LIKE '999%'
有什么想法我会出错吗?我知道我应该得到几个结果。
示例日期如下...
my_row
______
12345
45673
G12354
1234B
999RT
鉴于此测试数据:
create table my_table (id number, my_row varchar2(10));
insert into my_table values (1, '7878')
/
insert into my_table values (2, 'THIS')
/
insert into my_table values (3, 'and this')
/
insert into my_table values (4, '999NOTthis')
/
您的查询返回以下结果:
ID MY_ROW
-- ------
2 THIS
3 and this
这些似乎是我们希望您的逻辑返回的行,因此问题显然出在您的数据中。
给定您的示例数据,此查询:
with my_table as (
select '12345' as my_row from dual union all
select '45673' from dual union all
select 'G12354' from dual union all
select '1234B' from dual union all
select '999RT' from dual
)
select * from my_table
where regexp_like(my_row, '[a-zA-Z]')
and my_row not like '999%'
产量
MY_ROW
------
G12354
1234B
所以我可以支持 APC 的回答,说问题出在其他地方