SQLの基本:正規表現入門:正規表現関数の使い方
投稿日:
はじめに
SQLでは、正規表現を使用して複雑なパターンマッチングを行うことができます。正規表現を使用することで、文字列のパターンに基づいてデータを検索、抽出、操作することができます。今回は、SQLでの正規表現の基本的な使い方と、その応用について解説します。
正規表現を使用する関数
SQLには、正規表現を使用するためのさまざまな関数があります。一般的に使用される関数には、以下のものがあります。
REGEXP or RLIKE, REGEXP_LIKE, REGEXP_INSTR, REGEXP_REPLACE, REGEXP_SUBSTRREGEXP (RLIKE)
REGEXPまたはRLIKEは、指定したパターンに一致する行を検索するために使用されます。
SELECT
column1,
column2
FROM table_name WHERE column_name REGEXP 'pattern';SELECT
column1,
column2
FROM table_name WHERE column_name RLIKE 'pattern';例 employeesテーブルから、名前が「A」または「E」で始まる従業員を取得するクエリは次の通りです。
SELECT
first_name,
last_name
FROM employees WHERE first_name REGEXP '^[AE]';REGEXP_LIKE
REGEXP_LIKEは、指定したパターンに一致するかどうかをチェックするために使用されます。
SELECT
column1,
column2
FROM table_name WHERE
REGEXP_LIKE(column_name, 'pattern');例 employeesテーブルから、名前が「A」または「E」で始まる従業員を取得するクエリは次の通りです。
SELECT
first_name,
last_name
FROM employees
WHERE REGEXP_LIKE(first_name, '^[AE]');REGEXP_INSTR
REGEXP_INSTRは、指定したパターンが最初に出現する位置を返します。
SELECT
REGEXP_INSTR(column_name, 'pattern') AS position
FROM table_name;例 employeesテーブルから、名前に「a」が最初に出現する位置を取得するクエリは次の通りです。
SELECT
first_name,
REGEXP_INSTR(first_name, 'a') AS position
FROM employees;REGEXP_REPLACE
REGEXP_REPLACEは、指定したパターンに一致する部分を他の文字列に置換します。
SELECT
REGEXP_REPLACE(column_name, 'pattern', 'replacement') AS result
FROM table_name;例 employeesテーブルから、名前の中の「a」を「@」に置換するクエリは次の通りです。
SELECT
first_name,
REGEXP_REPLACE(first_name, 'a', '@') AS replaced_name
FROM employees;REGEXP_SUBSTR
REGEXP_SUBSTRは、指定したパターンに一致する部分文字列を抽出します。
SELECT
REGEXP_SUBSTR(column_name, 'pattern') AS result
FROM table_name;例 employeesテーブルから、名前に含まれる最初の「a」を含む部分文字列を抽出するクエリは次の通りです。
SELECT
first_name,
REGEXP_SUBSTR(first_name, 'a') AS substr
FROM employees;応用例
メールアドレスの検証
テーブルusersから、有効なメールアドレス形式のユーザーを取得するクエリは次の通りです。
SELECT
email
FROM users
WHERE email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$';電話番号の形式変更
テーブルcontactsから、電話番号の形式を「(123) 456-7890」に変換するクエリは次の通りです。
SELECT
phone_number,
REGEXP_REPLACE(phone_number, '^(\d{3})(\d{3})(\d{4})$', '(\1) \2-\3') AS formatted_phone
FROM contacts;正規表現でよく使うパターン
正規表現のパターンを覚えておくと、さまざまな場面で活用できます。
^ - 文字列の先頭(例: '^ABC' → ABCで始まる)
$ - 文字列の末尾(例: 'xyz$' → xyzで終わる)
[ABC] - A, B, Cのいずれか1文字
[0-9] - 数字1文字
. - 任意の1文字
* - 直前のパターンの0回以上の繰り返し
+ - 直前のパターンの1回以上の繰り返し
正規表現はLIKEよりも柔軟なパターンマッチングが可能ですが、パフォーマンスはLIKEの方が優れています。単純な前方一致・後方一致はLIKEを使いましょう。
まとめ
今回は、SQLの正規表現を使用した文字列操作について学びました。REGEXP, REGEXP_LIKE, REGEXP_REPLACE, REGEXP_SUBSTRなどの関数を使いこなすことで、LIKEでは対応できない複雑な文字列パターンの検索・置換が可能になります。
SQLマーケティングアカデミーで身につけたSQLスキル、実務でも使ってみませんか?
SheetFlowは、ExcelファイルをアップロードしてSQLで直接操作できるクラウドサービスです。学んだSELECT文やJOIN、集計関数をそのまま業務データに適用し、手作業の集計を自動化できます。
SheetFlowを無料で試す