Oracle SQL 数字のみを抽出/除外する方法 - REGEXP_LIKE関数 ホームページ制作 | 墨田区

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

LINEで送る
Pocket

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

抽出するには REGEXP_LIKE 関数を利用します。

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




【PR】マジか?!「アレ」してるLINEスタンプっていったい・・・


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 数字のみを除外した結果

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


まとめ

この関数と正規表現を利用すれば、色々な条件で抽出が可能です。

実務の中で、様々なシーンで活用できますね。


おつかれさまでした。

LINEで送る
Pocket

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

コメントを残す

コメント(必須)

お名前 (必須)
メールアドレス
(アドレスは公開されません)

Trackback URL