はじめに
文字列データから特定パターンに該当するデータを検索したい場合があります。
本記事では正規表現を使用して上記のデータを検索する関数「REGEXP_LIKE」をご紹介します。
構文
REGEXP_LIKE( string, pattern[, modifiers ] )
パラメータ | 説明 |
|---|---|
string | 検索対象の文字列(項目)を指定します。 |
pattern | stringに対して検索する正規表現を含む文字列を指定します。 |
modifiers | [オプション] |
実行例
/* テーブルの全データを確認 */
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 本記事を公開