Oracle SQL,其中regexp\u喜欢和不喜欢

Oracle SQL,其中regexp\u喜欢和不喜欢,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我想查询一个与正则表达式进行比较的表,然后筛选出以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

我想查询一个与正则表达式进行比较的表,然后筛选出以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
给你

这些似乎是我们希望您的逻辑返回的行,因此问题显然存在于您的数据中。

鉴于此测试数据:

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

所以我可以说,第二个问题在别处

鉴于您的示例数据,此查询:

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

因此,我可以再说一句,问题出在别处

在我看来,这个查询是正确的。你能从
my_table
中提供一些实际的样本数据吗?我觉得查询是正确的。你能从我的表格中提供一些实际的样本数据吗?当你确认我的查询是正确的并且数据有问题时,我会给这个答案打勾。事实证明,数据前导空格(如“999RT”)上的记录是错误的,因此我必须首先进行修剪。我将在您确认我的查询是正确的并且数据有问题后给出答案。结果是数据前导空格(例如'999RT')上的记录,所以我必须先修剪。