0

データが以下の形式で保存されているmysqlのデータベーステーブルをクエリしています。

例:

+------------+------------+------------+
| adv_images | start_date | end_date   |  
+------------+------------+------------+
| 21.jpg     | 2013-05-22 | 2013-05-28 |         
| 2.jpg      | 2013-05-22 | 2013-05-28 |        
| 2a.jpg     | 2013-05-22 | 2013-05-28 |   
| 2b.jpg     | 2013-05-22 | 2013-05-28 |  
| 2c.jpg     | 2013-05-22 | 2013-05-28 |
+------------+------------+------------+

3.jpg、3a.jpg、3b.jpg、41.jpg など、同様の形式のデータがさらに多く存在します。

このクエリを使用してデータベースにクエリを実行しています:-

SELECT adv_imagesWHERE adv_imagesREGEXP BINARY '^(2+[az]?)';

ここでの私の要件は、2 のみで始まる adv_images (つまり、2.jpg、2a.jpg など) のみをプルすることです。しかし、21.jpg、22.jpg、22a.jpgなどを引っ張っています。

どうすれば修正できますか。

4

4 に答える 4

1

ベンジャミンが指摘したように、これはあなたの場合にぴったりです。

^2([a-zA-Z]?)+\.jpg

意味:

  • 皮切りに2
  • 0 個または 1 個のアルファが続く
  • に続く.jpg
于 2013-05-06T11:13:48.837 に答える
0

これを試して

^([2+][a-z]?)\.jpg

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

SELECT adv_images WHERE adv_images REGEXP BINARY '^([2+][a-z]?)\.jpg';
于 2013-05-06T11:23:58.523 に答える
0

これは役立つかもしれません:

SELECT adv_images WHERE adv_images + 0 = 2;
于 2013-05-06T11:09:02.363 に答える
0

これを試してくれてありがとう、しかし、私は解決策への簡単な方法を見つけました.

SELECT adv_images WHERE adv_images REGEXP BINARY '^(2+[az]?)' ; 私はこれを試していましたが、今は「。」を追加しました。正規表現で

元-

SELECT adv_images WHERE adv_images REGEXP BINARY '^(2+[az.]?)' ; そして、その作業は私にとって完璧です。

于 2013-05-06T11:30:37.123 に答える