1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Db2 : SQLで正規表現(2)正規表現とLIKEとの比較

Last updated at Posted at 2022-12-16

正規表現とLIKEの比較

Db2 LUW(Linux,Unix and Windows版)ではV11.1以降、正規表現をSQL内で使うことができるようになっており、Oracle互換機能の一環として、Oracleと互換性のある正規表現スカラー関数が使用できます。

正規表現とLIKEを比較してみます。

LIKE 正規表現サポート
使用方法 「述部」
主にWHERE句で特定のパターンを持つストリングを探索するための演算
WHERE column1 LIKE '資料%'; 
(備考1)
「関数」
SELECTの列リストやWHERE句での条件判断式で使用できる
WHERE REGEXP_LIKE ( column1, '^資料.' ) = TRUE;
(備考2)
対応パターン •「%」任意のゼロ文字以上の文字列
•「_」任意の一文字
•一般的な正規表現パターンをサポート
•マッチ文字列パターンと置換文字列パターン
対応機能 •探索のみ •探索結果(マッチの有無)
•マッチした回数
•マッチした箇所
•マッチ箇所を置換パターンで置換した文字列
•マッチ箇所の文字部分列

備考1: 以下のように、LIKE述部はSELECTの列リストでの利用も可能です。

SELECT strvalue , strvalue LIKE '%c_' AS "LIKEマッチ結果" 
	FROM (
		VALUES
			 'ABCアabca',
			 'ABCいabcb',
			 'ABCxabcc',
			 'abcアABCa',
			 'abcいABCb',
			 'abcxABCc'
	) AS dummytable (strvalue);


STRVALUE  LIKEマッチ結果
--------- -----------------
ABCアabca      true
ABCいabcb      true
ABCxabcc       true
abcアABCa      false
abcいABCb      false
abcxABCc       false

備考2: 正規表現関数(REGEXP_LIKE)のSELECT 列リストでの使用例

SELECT strvalue
	, REGEXP_LIKE (strvalue, '.*c.$', 'c') AS "大文字小文字区別あり"
	, REGEXP_LIKE (strvalue, '.*c.$', 'i') AS "大文字小文字区別なし"
	FROM (
		VALUES
			 'ABCアabca',
			 'ABCいabcb',
			 'ABCxabcc',
			 'abcアABCa',
			 'abcいABCb',
			 'abcxABCc'
	) AS dummytable (strvalue);


STRVALUE  大文字小文字区別あり    大文字小文字区別なし
--------- ------------------  ------------------
ABCアabca      true                true
ABCいabcb      true                true
ABCxabcc       true                true
abcアABCa      false               true
abcいABCb      false               true
abcxABCc       false               true      

参考資料

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?