2

これはmysqlの単一の範囲よりも少し複雑です。私のフィールドデータは{"id":"15","value":"1200"} であり、で見つけることができます。

SELECT * 
FROM  `my_table` 
WHERE  `my_field` 
REGEXP  '{"id":"15","value":"1200"}'

しかし、私が必要としているのは、値の範囲です

したがって、1000> 2000の範囲を探す必要があり、json値が1200のフィールドが一致するはずです。リソースを消費するため、phpで出力をやり直すことはできません。そのため、戻り時にphpを介してデータを処理せずに、Mysql内で可能であればお願いします。

どんな助けでも大歓迎です!

誰にでも解決策!

LCは私たちに非常に素晴らしい解決策を与えました

REGEXP '{"id":"15","value":"(1[0-9][0-9][0-9]|2000)"}'
4

1 に答える 1

5

私のひざまずく反応は、「1つの列に複数の値を格納するのをやめる」というものですが、そのようにする必要があり、正規表現の力がある場合は、それを使用してください(テストされていません)。

SELECT * 
FROM `my_table` 
WHERE `my_field` REGEXP '{"id":"15","value":"(1[0-9][0-9][0-9]|2000)"}'

インデックスを使用してこのクエリを最適化する方法がないため、のすべての行を調べることに固執することに注意してくださいmy_table

于 2012-07-12T18:10:48.030 に答える