1

私の列に John1、John、Jo1hn、1John がある場合..John のみを抽出するクエリを作成する必要があります。つまり、どの場所にも数字はありません

私はすでにregexp_likeで複数のオプションを試しましたが、以下のクエリが近づいてきました

select * from table where  regexp_like(column,'[^[:digit:]]+$');

ただし、最後の文字が 1 である John1 のみを除外しているだけで、他の文字は除外していません。

質問が明確でない場合はお知らせください。前もって感謝します!

4

2 に答える 2

2

この方法を試してみましょう:

SQL> with t1(col) as(
  2    select 'John1' from dual union all
  3    select 'John'  from dual union all
  4    select 'Jo1hn'  from dual union all
  5    select '1John' from dual
  6  )
  7  select *
  8    from t1
  9  where regexp_like(col, '^[^[:digit:]]+$')
 10  ;

COL
-----
John

また

SQL> with t1(col) as(
  2    select 'John1' from dual union all
  3    select 'John'  from dual union all
  4    select 'Jo1hn'  from dual union all
  5    select '1John' from dual
  6  )
  7  select *
  8    from t1
  9  where regexp_like(col, '^[[:alpha:]]+$')
 10  ;

COL
-----
John
于 2012-11-19T15:31:41.800 に答える
1

次を使用することもできますNOT

SQL> SELECT *
  2    FROM (SELECT 'John1' txt FROM dual
  3          UNION ALL
  4          SELECT 'John' FROM dual
  5          UNION ALL
  6          SELECT 'Jo1hn' FROM dual
  7          UNION ALL
  8          SELECT '1John' FROM dual)
  9   WHERE NOT regexp_like(txt, '[[:digit:]]');

TXT
----
John
于 2012-11-19T15:41:41.023 に答える