• ベストアンサー

MySQLでテーブル一致条件に正規表現は使用可能?

・MySQLで一致条件に正規表現を使用することは出来ますか? ・もし出来るとすればどのようにすれば良いでしょうか? ■やりたいこと ・aテーブルのurlカラム内容が「/color/★★」だったら「/color/」以下の★★を抽出して、bテーブルのidと一致したレコードを抽出したい ・aテーブルの★★と、bテーブルのidカラムが一致しているレコードが欲しい ・aテーブルのurlカラムには「/color/58」「/color/26」「/hoge/■■」などが入っています SELECT *     FROM a      LEFT JOIN a.url = b.id     REGEXP '^(/color)'?     where a.★★ = b.id

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

select a.* from a left join b on substring(a.url,8)=b.id where a.url REGEXP '^/color/.*' where substring(a.url,1,7)='/color/' 抽出条件はurlが'/color/'で始まるもの where句はどちらも同じ意味になりますので、 どちらかを使って下さい。 結合条件はa.urlの8文字目以降とb.idが 一致するものです。

re97
質問者

お礼

回答ありがとうございました。 おかげでうまくいきました! ・where句の書き方にも色々あるんですね ・大変参考になりましたー

その他の回答 (1)

  • hardgeek
  • ベストアンサー率50% (7/14)
回答No.1

ショートアンサー:正規表現は使えるけど、その場合インデックスを使った実行計画は選択されない、です。 事前にURLから属性を抽出して、別のカラムに持たせておくというのが、スタートラインじゃないかと思います。

re97
質問者

お礼

回答ありがとうございましたー

関連するQ&A