SQLの基本:正規表現入門:正規表現関数の使い方
投稿日:
はじめに
SQLでは、正規表現を使用して複雑なパターンマッチングを行うことができます。正規表現を使用することで、文字列のパターンに基づいてデータを検索、抽出、操作することができます。今回は、SQLでの正規表現の基本的な使い方と、その応用について解説します。
正規表現を使用する関数
SQLには、正規表現を使用するためのさまざまな関数があります。一般的に使用される関数には、以下のものがあります。
REGEXP or RLIKE, REGEXP_LIKE, REGEXP_INSTR, REGEXP_REPLACE, REGEXP_SUBSTR
REGEXP (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;
まとめ
今回は、SQLの正規表現を使用した文字列操作について学びました。正規表現を使うことで、複雑なパターンマッチングや文字列操作を簡単に実現することができます。次回の記事では、さらに高度なSQLクエリやデータベース操作について詳しく解説していきます。ぜひご期待ください!