选择与一组前缀匹配的行

吉拉斯·贝哈迪(Ghilas BELHADJ)

我想选择与任一数字开头36375而不是其他表所示:

+-------------+
| phone       |
+-------------+
| 36000000000 |  <
| 37000000001 |
| 36000000002 |  <
| 37500000002 |  <
| 34000000002 |
| 33000000002 |
+-------------+

我试过了 :

select phone from numbers where phone in ( "36%", "375%" );

但它返回一个空集,我猜通配符%不适用于该in功能

就我而言,我要测试很多前缀,这就是为什么我不使用like运算符的原因

阿尔玛·杜

您可以通过单个正则表达式来做到这一点:

SELECT phone FROM numbers WHERE phone REGEXP '^(36*|375*)'

仍然需要一些操作(即重新计算前缀),但比OR LIKE语法

现在至于索引。旧版本的MySQL在这两种情况下都不会使用索引- OR LIKE(由于OR)和REGEXP但是新版本(我已经在5.5上进行了测试)将在两种情况下都使用index-请参见此演示编辑:可能 OR LIKE会在旧版本的MySQL中使用索引,而不是REGEXP-仍有待检查(在下面的注释中,我们发现5.1版本的索引使用OR LIKE。的REGEXP索引用于5.5)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章