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
  • 后跟零个或一个 alpha
  • 其次是.jpg
于 2013-05-06T11:13:48.837 回答
0

This may help:

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 回答
0

尝试这个

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

所以你的查询变成

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