Oracle SQL 数字のみを抽出/除外する方法 - REGEXP_LIKE関数
Oracle SQLで文字列属性のカラムから数字のみ抽出/除外する方法です。
抽出するには 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 条件を付加することで、数字のみのレコードを抽出できます。
結果はこうなります。
おおおー、数字のみのレコードが抽出されたー^^
仮に数字のみ除外したいのであれば not 条件を外せば抽出できますよ。
select * from example
where regexp_like(exdata,'[^0-9]');
結果はこうなります。
ふむふむ、いい感じです^^
まとめ
Oracle SQLで文字列属性のカラムから数字のみ抽出/除外する方法を紹介しました。
この関数と正規表現を利用すれば様々な条件で抽出が可能です。実務の様々なシーンで活用できそうですね。
おつかれさまでした。