2

REGEXP を使用して、列内の大量のテキストから特定の文字列を照合していLONGTEXTます。例えば:

Text text text text text
 text text text text text
 text text SOLD: 75/101 text
 text text text text text

したがって、私のクエリは次のようになっています。

SELECT * FROM `test` WHERE `file` REGEXP
'SOLD:[ ]{1}[0-9]{1,2,3}/[0-9]{1,2,3}'

これは文字列に適切に一致しSOLD: 75/101ます。

しかし、分子で比較することは可能ですか? など、すべてを見つけますSOLD: >=75/101か?

比較番号は、$_POST を介してユーザーが入力した番号になります。REGEXP は実際には数値を比較するためのものではないことはわかっていますが、文字列を正規表現でキャプチャしてから、別の方法で整数を比較する方法はありますか?

4

1 に答える 1

3

コメントに記載されているように、分子だけを見る必要がある場合は、

SELECT * FROM mytable WHERE mycolumn REGEXP 
"SOLD: ([1-9][0-9]{2,}|[8-9][0-9]|7[5-9])/101";

動作するはずです。

ところで、[0-9]{1,2,3}ほとんどの正規表現フレーバーの構文エラーです (MySQL がどのように処理するかはわかりません)。範囲を指定する正しい方法は です[0-9]{1,3}

于 2012-09-23T21:22:49.040 に答える