- 締切済み
MySQLにおける正規表現
はじめて投稿させていただきます。 質問なのですが、 mysqlの正規表現において、文字と文字の間の文字の抽出はできますでしょうか?様々なwebサイトを参考にして挑戦しましたが、うまくいきません。よろしくお願いします。 tableはweatherテーブルとし、 id:int content:char 正規表現抽出内容[曇時々雪 - 最高気温-2℃ (木)] の文字列のうち[-2]を抽出 試してみたselect文 select content from weather content regexp "['温'-'℃']"; です。 他にもいくつか検証しましたが、答えを導くことができませんでした(*_*;よろしくおねがいします。 ちなみに、登録者のuserテーブルに格納されているカラム(利用者設定温度)と比較し、設定温度>正規表現結果のuser情報だけを表示したいのですが、できますでしょうか?(正規表現と関数計算の応用?) userテーブルは id:int temperature(設定温度):int よろしくおねがいします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- bleis
- ベストアンサー率68% (11/16)
MySQLには詳しくないので、間違ったことを書いているかもしれません。 MySQLの正規表現はLIKEの強化版でしかないため、部分文字列の切り出しやマッチした位置の取得などは出来ません。 もちろん後方参照などの機能もないため、MySQLの正規表現ではお望みの結果の取得は不可能です。 正規表現にこだわらないのでしたら、文字列関数を駆使して SELECT CAST( SUBSTRING( content, INSTR(content, '温') + 1, INSTR(content, '℃') - (INSTR(content, '温') + 1)) AS signed) AS max_temp FROM weather; このようなSQLでお望みの結果が得られると思います(これは結果を試してません)。 が、文字列関数はRDBMSごとに互換性がほとんどない上に、多用するととても読みにくくなってしまいます(上のSQLのように、関数がネストしたSQLはお世辞にも読みやすいとは言えません)。 可能ならばテーブル設計を見直しましょう。