1

正規表現と比較しているテーブルをクエリしたいのですが、それらの結果のうち、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
4

2 に答える 2

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

それを証明する SQL Fiddle を次に示します。

これらは、ロジックによって返されると予想される行であるように思われるため、問題は明らかにデータにあります。

于 2012-07-23T10:41:05.820 に答える
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の回答を支持することができます

于 2012-07-23T10:49:07.383 に答える