アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめて投稿させていただきます。
質問なのですが、
mysqlの正規表現において、文字と文字の間の文字の抽出はできますでしょうか?様々なwebサイトを参考にして挑戦しましたが、うまくいきません。よろしくお願いします。
tableはweatherテーブルとし、
id:int
content:char
正規表現抽出内容[曇時々雪 - 最高気温-2℃ (木)]
の文字列のうち[-2]を抽出
試してみたselect文
select content from weather content regexp "['温'-'℃']";
です。
他にもいくつか検証しましたが、答えを導くことができませんでした(*_*;よろしくおねがいします。

ちなみに、登録者のuserテーブルに格納されているカラム(利用者設定温度)と比較し、設定温度>正規表現結果のuser情報だけを表示したいのですが、できますでしょうか?(正規表現と関数計算の応用?)
userテーブルは
id:int
temperature(設定温度):int

よろしくおねがいします。

A 回答 (1件)

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はお世辞にも読みやすいとは言えません)。
可能ならばテーブル設計を見直しましょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!