mysql中括号的表达_mysql-在通配符的SQL语句中将方括号括起来

当我将方括号和%通配符一起使用时,如下所示,MySQL不会选择任何以数字开头的记录.互联网上的许多示例都将其视为正确用法.有什么建议么?在字母(a-d)范围内也不起作用.我正在运行MySQL 3.2

SELECT * FROM customers WHERE lname LIKE '[0-9]%' ORDER BY lname ASC

要么

SELECT * FROM customers WHERE lname LIKE '[a-d]%' ORDER BY lname ASC

解决方法:

尽管我不认为MySQL在带有正LIKE子句的[]中不支持类似[-]的正则表达式字符类(我也找不到relevant documentation),但是MySQL确实具有REGEXP/RLIKE operator,您可以使用该结构构造正则表达式以实现可比的功能.

SELECT * FROM customers WHERE lname REGEXP '^[0-9]' ORDER BY lname ASC

SELECT * FROM customers WHERE lname REGEXP '^[a-d]' ORDER BY lname ASC

要构建类似于您使用的通配符模式的正则表达式,请从^开始将模式左固定,并使用与您建议的字符类相同的字符[0-9],[a-f].您不需要在其后跟随任何内容,因为%通配符将等效于在初始左定锚字母或数字后加上^ []的任何零个或多个字符的匹配.

当然,您可以将这些语句与逻辑OR组合在一起,或构建匹配任一情况的正则表达式.

SELECT * FROM customers WHERE lname REGEXP '^[a-d]|[0-9]' ORDER BY lname ASC

标签:sql,mysql,wildcard

来源: https://codeday.me/bug/20191030/1964780.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值