mysql语句正则表达式_如何在Mysql的sql语句中使用正则表达式

正则表达式在sql语句中的使用可算是经典!正则表达式的强大之处,在于字符串匹配。

之前的时候,当查询一些数据时,总是在where后面添加几个=、is not null、like等查询条件,而这些条件要么范围太小,要么查询效率太低。自从使用了正则表达式,妈妈再也不用担心我的查询条件写的又臭有长了!

在查询条件中使用正则表达式的一个好处是,可以灵活应对复杂的字符串的模式匹配,大范围而且高效的查询出我们需要的结果。

SELECT '12-34' REGEXP '^[0-9]+(-){1}[0-9]+$' ok;

查询结果是1(当字符串与正则表达式匹配时,返回1,否则返回0)。

说到这,回头想想,当时需要导入七万条数据,出了简单的字段匹配和格式洗刷,还有个十分棘手的问题,有个字段是代表页数,原先数据库定义为字符串类型,原始数据有‘12’这种纯数字,也有‘12-23’这种数据范围,更恶心的是还有‘12~23’、‘12·23’、‘12——23’、‘12_23’以及全角字符等格式!也是逼得迫不得已了,使用了正则表达式,没想到的是,刚开始感觉很难,但到发现它的威力后,便深深的爱上了它!

就拿判断一个字符串是否为纯数字而言,如果使用sql的函数,就麻烦多了,如下:

select LENGTH('123') = LENGTH(CAST('123' AS signed int)) ok;

查询结果是1(当字符串是纯数字时,返回1,否则返回0)。

而如果使用正则表达式仅需如下代码:

SELECT '12' REGEXP '^[0-9]+$' ok;

简单粗暴有疗效!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值