我想查询一个表格,我正在与正则表达式进行比较,然后我想过滤掉任何以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
答案 0 :(得分:4)
鉴于此测试数据:
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
这些似乎是我们希望您的逻辑返回的行,因此问题显然在您的数据中。
答案 1 :(得分:1)
根据您的示例数据,此查询:
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's answer,说问题出在其他地方