OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

正規表現を使用する方法

公開日:
更新日:
基本操作
#関数

はじめに

文字列データから特定パターンに該当するデータを検索したい場合があります。
本記事では正規表現を使用して上記のデータを検索する関数「REGEXP_LIKE」をご紹介します。

構文

REGEXP_LIKE( string, pattern[, modifiers ] )

パラメータ

説明

string

検索対象の文字列(項目)を指定します。
VARCHAR型またはLONG VARCHAR型の項目を指定できます。

pattern

stringに対して検索する正規表現を含む文字列を指定します。
正規表現の構文は、Perl 5の正規表現の構文と互換性があります。

modifiers

[オプション]
1つ以上の単一文字フラグを指定します。
正規表現が文字列の一致を見つける方法を変更します。

'b'
文字列をUTF-8文字ではなくバイナリオクテットとして扱います。

'c'
大文字と小文字を区別するように一致を強制します(デフォルト)。

'i'
大文字と小文字を区別しないように一致を強制します。

'm'
文字列を複数行として一致するように扱います。
この修飾子を使用すると、行頭(^)および行末($)の正規表現演算子は、文字列内の改行(\n)に一致します。
m修飾子がない場合、行頭および行末演算子は文字列の先頭と末尾のみに一致します。

'n'
単一文字の正規表現演算子(.) が改行(\n) と一致することを許可します。
n修飾子がない場合、(.)演算子は改行を除くすべての文字に一致します。

'x'
正規表現にコメントを追加します。
x修飾子を使用すると、正規表現のエスケープされていないスペース文字とコメントがすべて無視されます。
コメントはハッシュ(#)文字で始まり、改行(\n)で終わります。
文字列で一致させたい正規表現のすべてのスペースは、バックスラッシュ(\)文字でエスケープする必要があります。

実行例

/* テーブルの全データを確認 */
dbadmin=> SELECT * FROM test ORDER BY 1;
 col1 |                       col2                        
------+---------------------------------------------------
    1 | アシストの本社は市ヶ谷です。
    2 | アシストは沖縄に拠点あります。
    3 | アシストは北海道に拠点あります。
    4 | 市ヶ谷が本社です。
    5 | 沖縄に拠点があります。
    6 | 北海道に拠点があります。
    7 | 株式会社アシストは1972年3月に設立しました。
    8 | 株式会社アシスト北海道は2013年1月に設立しました。
    9 | 株式会社のれんは2014年1月に設立しました。
(9 rows)

/* 冒頭が「沖縄」または「北海道」で始まるデータを検索 */
dbadmin=> SELECT * FROM test WHERE REGEXP_LIKE(col2, '^[沖縄|北海道]');
 col1 |           col2           
------+--------------------------
    5 | 沖縄に拠点があります。
    6 | 北海道に拠点があります。
(2 rows)

/* 2000~2999年の文字を含むデータを検索 */
dbadmin=> SELECT * FROM test WHERE REGEXP_LIKE(col2, '[2-9][0-9]{3}年');
 col1 |                       col2                        
------+---------------------------------------------------
    8 | 株式会社アシスト北海道は2013年1月に設立しました。
    9 | 株式会社のれんは2014年1月に設立しました。
(2 rows)

参考情報

REGEXP_LIKE関数のマニュアル
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Functions/RegularExpressions/REGEXP_LIKE.htm

検証バージョンについて

この記事の内容はVertica 9.2で確認しています。

更新履歴

2019/09/13 本記事を公開