MySQL - RLIKE演算子

こんにちは、データベース愛好家の皆さん!今日は、MySQLのRLIKE演算子の世界に興味深く飛び込んでみましょう。あなたの近所の親切なコンピュータサイエンスの先生として、私は多くの例と説明を交えてこのトピックを案内します。那么、虚拟のメモ帳を準備して、一緒に潜りましょう!

MySQL - RLIKE Operator

MySQL RLIKE演算子

RLIKEとは?

RLIKEは、正規表現を使用してパターンマッチを行う強力な演算子です。今、あなたが考えていることを知っています - 「正規表現?それって恐ろしい!」でも、心配しないでください。ステップバイステップで解説します。

RLIKEを超智能な検索ツールとして考えてください。データベースの中にいる複雑なパターンに基づいて情報を見つけることができる探偵のような存在です。すごい吧?

基本構文

RLIKE演算子の基本構文は以下の通りです:

expr RLIKE pattern

ここで、exprは検索したいexpression(通常はカラム名)で、patternはマッチングしたい正規表現です。

簡単な例から始めましょう:

SELECT * FROM customers WHERE last_name RLIKE 'son$';

このクエリは、姓が「son」で終わるすべての顧客を見つけます。パターンの中の$記号は「文字列の終わり」を意味します。したがって、Johnson、Wilson、またはAndersonなどの名前が一致します。

RLIKEで使用されるパターン

さあ、RLIKEで使用できる一般的なパターンを見てみましょう。これらは、私たちのデータベース探偵が謎を解決するための秘密のコードだと思ってください!

パターン 説明
^ 文字列の始めに一致 '^A'は'Apple'に一致しますが、'Banana'には一致しません
$ 文字列の終わりに一致 'e$'は'Apple'に一致しますが、'Banana'には一致しません
. 任意の一文字に一致 'b.t'は'bat'、'bit'、'but'などに一致します
* 前の文字の0回以上の発生に一致 'go*gle'は'ggle'、'google'、'gooogle'などに一致します
+ 前の文字の1回以上の発生に一致 'go+gle'は'google'、'gooogle'に一致しますが、'ggle'には一致しません
[] かかり括弧内の任意の一文字に一致 '[aeiou]'は任意の母音に一致します
[^] かかり括弧内にない任意の一文字に一致 '[^0-9]'は任意の数字以外に一致します

これらを実際に使ってみましょう!

SELECT * FROM products WHERE name RLIKE '^A.*e$';

このクエリは、名前が'A'で始まり、'e'で終わるすべての製品を見つけます。中央の.*は「0回以上の任意の文字」を意味します。したがって、「Apple」、「Airplane」、または単なる「Ae」などの名前が一致します。

文字列に対するRLIKE

RLIKEはテーブル内の検索に限りません。文字列に対しても直接使用できます!これはパターンをクエリに使用する前にテストするのに非常に便利です。

SELECT 'MySQL' RLIKE 'SQL$';

これは「MySQL」が「SQL」で終わるかどうかを返します。1(真)が返されるため、「MySQL」は確かに「SQL」で終わります。

次は楽しいものです:

SELECT 'Mississippi' RLIKE 's+is+';

これは1を返します。「Mississippi」には1回以上の「s」に続く「i」に続く1回以上の「s」が含まれているため、「ssis」が文字列の中央に一致します。

RLIKE演算子を使用したクライアントプログラム

次に、より複雑なシナリオでRLIKEを使用してみましょう。Imagine we have a table of email addresses, and we want to find all Gmail addresses. Here's how we could do that:

SELECT * FROM users WHERE email RLIKE '^[A-Za-z0-9._%+-]+@gmail\\.com$';

これは複雑に見えます!解説しましょう:

  • ^ : 文字列の始め
  • [A-Za-z0-9._%+-]+ : Emailアドレスに許可されている1文字以上の文字、数字、または特殊文字
  • @ : @記号
  • gmail\\.com : 文字通り「gmail.com」(ドットをエスケープするためにバックスラッシュを使用)
  • $ : 文字列の終わり

このパターンは標準的なGmailアドレスに一致します。

私の教師経験からの小さな話です:ある生徒がデータベース内のすべてのAOLメールアドレスを見つけるために、手動で各エントリをチェックしていました(数千件ありました)。彼にRLIKEを使う方法を教えたとき、彼は非常に喜んでクラスで跳ねました!

練習時間!

楽しいエクササイズで終わりましょう。以下の形式の電話番号を見つけるためのRLIKEパターンを書けてみてください:(XXX) XXX-XXXX。挑戦してみて、そして以下の答えを確認してください!

SELECT * FROM contacts WHERE phone RLIKE '^\\\([0-9]{3}\\\) [0-9]{3}-[0-9]{4}$';

このパターンは以下に一致します:

  • ^\\\( : 开く括弧で始まる(二重エスケープが必要なため)
  • [0-9]{3} : 正確に3桁の数字
  • \\\) : 閉じる括弧
  • ` ` : 空白
  • [0-9]{3} : 更に3桁の数字
  • - : ハイフン
  • [0-9]{4} : 最後の4桁の数字
  • $ : 文字列の終わり

そして、ここまででRLIKEの力を手に入れました!どんなスーパーパワーもように、賢く使ってください。未来のデータベースの魔法使いとして、ハッピークエリを!

Credits: Image by storyset