SQLφ(..)メモメモその4

blue pattern texture internet
Photo by Enes Kurt on Pexels.com

文字列のつづき、正規表現によるSQLの使い方ですね。

regexp_contains(列,r’正規表現’)文字列が正規表現に合致してればtrue 合致してなければfalseを返します。条件文にするならBoolen型だから regexp_contains(列,r’正規表現’) is true とかfalseと書く。
regexp_extract(列,r’正規表現’)正規表現に合致した部分だけ取り出す
regexp_replace(列,r’正規表現の置き換えたい文字列’,’置き換える文字列’)
たとえばメアドマスキングに使えそうなのが regexp(列,r'[^@]’,’X’) メアド全部XXX@XXXXする。

正規表現。この表がわかりやすそう

正規表現の常識(%や_をワイルドカードにするのは正規表現じゃないからね
ちなみに\(バックスラッシュ)は日本語キーボードで出てきにくいけど¥(円の半角)と同じだよ
^ 前方一致
$後方一致
\もしくは¥前の言葉を打ち消す
[0-9]0から9までの数字
* は、直前の文字がないか、直前の文字が1個以上連続するという意味
おー*い は  おい おーーい おーーーーい を検索できる
+は、1子以上の繰り返し。最低でも1個は + の直前の文字がないといけません。後は、それが連続するという意味になります。
おー+い は おーい おーーい おーーーーい を検索できるが おい は対象外。
? の場合は、直前の文字がまったくないか、1つだけあるという意味
おー?い は おい おーい はありだけど、 おーーい おーーーーい は対象外。
[文字] 角括弧に含まれるいずれか1文字にマッチします。 [abc] abcいずれか
[^ ] 括弧内に含まれない 1 文字
(文字) 文字を1つのグループにできる [ab|cd]はabもしくはcdが含まれてる文字となる
\d すべての数字 [0-9] と同じ
\D すべての数字以外の文字 [60-9] と同じ
\s 垂直タブ以外のすべての空白文字 [ \t\f\r\n] と同じ \t タブ \f改ページ \r \nどっちも改行ね

使えそうな例
・メールアドレス@より前の文字を抽出(つまりアカウント名ですね) ’^[^@]+’
・電話番号のハイフンに囲まれた真ん中の番号 12-3456-7890の3456ですね ’-(\d+)-‘
・GAのチャネルグループのスラッシュ後半だけ抽出 ’/\s(.+)$’
おもしろいけどむずい。

投稿日:
カテゴリー: thinking

作成者: ejtter

Born in Fukushima, working as web analytics consultant since 2000.

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください