Oracle SQL 数字のみを抽出/除外する方法 - REGEXP_LIKE関数

Oracle SQLで文字列属性のカラムから数字のみ抽出/除外する方法です。

Oracle SQL 数字のみを抽出/除外する方法 - REGEXP_LIKE関数

抽出するには REGEXP_LIKE 関数を利用します。この関数は、文字列の一部を正規表現を使用して比較することができ、LIKE 演算子と同じように、パターンマッチングをします。

ここでは Oracle SQLで文字列属性のカラムから数字のみ抽出/除外する方法 を紹介します。


REGEXP_LIKE関数とは

Oracle SQLで文字列属性のカラムから数字のみ抽出/除外するには REGEXP_LIKE 関数を理解しましょう。

REGEXP_LIKE( 検索対象文字列 , 検索パターン , [ 検索モード ] )

正規表現を「検索パターン」に指定して、検索対象文字列の中からパターンにマッチすれば TRUE マッチしなければ FALSE を返します。検索モードは下記の仕様になっています。

  • i : 大文字/小文字を区別せずに検索する。
  • c : 大文字/小文字を区別してに検索する。

文字列属性のカラムから数字のみ抽出には

まずはサンプルとして下記のようなテーブルとデータを用意します。環境は Oracle 11g ですが、10g 以降であれば何でもいいです。

create table example (
 exdata varchar2(10) not null
);
insert into example values('1A');
insert into example values('001');
insert into example values('1');
insert into example values('2');
insert into example values('A1010');
insert into example values('AAAA');
insert into example values('BBBB');

この中から数字だけを抽出するには、以下のようなSQLを実行します。

select * from example
where not(regexp_like(exdata,'[^0-9]'));

[^0-9] は、数字以外の文字という正規表現です。regexp_like(exsample, '[^0-9]') とすることで、数字以外の文字を含むレコードを抽出します。これに not 条件を付加することで、数字のみのレコードを抽出できます。

結果はこうなります。

Oracle SQL 数字のみを抽出/除外する方法 - REGEXP_LIKE関数

おおおー、数字のみのレコードが抽出されたー^^

仮に数字のみ除外したいのであれば not 条件を外せば抽出できますよ。

select * from example
where regexp_like(exdata,'[^0-9]');

結果はこうなります。

Oracle SQL 数字のみを除外した結果

ふむふむ、いい感じです^^

まとめ

Oracle SQLで文字列属性のカラムから数字のみ抽出/除外する方法を紹介しました。

この関数と正規表現を利用すれば様々な条件で抽出が可能です。実務の様々なシーンで活用できそうですね。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。