Mysql之正则匹配

Regex与Like的关系
Mysql中我们经常会用到正则表达式就是Like filed like ‘%?%‘ 。但是有时对于一些复杂场景下的正则过滤,单单一个like就显得有些力不从心了

Regex的精华就是 ‘‘ , like ‘%%‘ = regex ‘‘,特殊字符如^、$可以改变%的意思。

  • like ‘%304%‘ = regex ‘304‘
  • like ‘张%‘ = regex ‘^张‘
  • like ‘%03‘ = regex ‘03$‘
  • like ‘%3%‘ or like ‘%4%‘ = regex ‘[34]‘ 一个字段包含3或者包含4
  • like ‘%3%‘ or like ‘%4%‘ = regex ‘3|4‘ 一个字段包含3或者包含4 
# 示例SQL---
# ‘‘ 匹配fw_ver字段中包含‘304‘字符串的所有数据:
select * from tbl_upgrade_policy where fw_ver like ‘%304%‘;
select * from tbl_upgrade_policy where fw_ver REGEXP ‘304‘;

# ^ 匹配输入字符串的开始位置
# 查找operator字段已‘张‘开头的记录
select * from tbl_upgrade_policy where operator like ‘张%‘;
select * from tbl_upgrade_policy where operator regexp ‘^李‘;

# $ 匹配输入字符串的结束位置
# 查找operator字段已‘03‘结尾的记录
select * from tbl_upgrade_policy where operator like ‘%03‘;
select * from tbl_upgrade_policy where operator regexp ‘03$‘;

# [...] 字符集合,匹配所包含的任意一个字符。
# 查询出update_type字段下为3或4或5中的任意数字
select * from tbl_upgrade_policy where update_type like ‘%3%‘ or update_type like ‘%4%‘ or update_type like ‘%5%‘;
select * from tbl_upgrade_policy where update_type REGEXP ‘[345]‘;

# p1|p2|p3 匹配 p1 或 p2 或 p3。
select * from tbl_upgrade_policy where update_type like ‘%3%‘ or update_type like ‘%4%‘;
select * from tbl_upgrade_policy where update_type REGEXP ‘3|4‘;

select * from tbl_upgrade_policy where update_type like ‘3%‘ or update_type like ‘%5‘;

# 注意:‘^[3,5]‘ 匹配以 3或,或5开头的记录
select * from tbl_upgrade_policy where update_type REGEXP ‘^[3,5]|4$‘;

# ‘^3,5‘ 匹配以 3,5 开头的记录
select * from tbl_upgrade_policy where update_type REGEXP ‘^3,5|2$‘;

  

原文地址:https://www.cnblogs.com/lingyejun/p/8424108.html

时间: 2024-11-10 20:48:49

Mysql之正则匹配的相关文章

php正则匹配用户名必须包含字母和数字且大于6位

php正则匹配用户名必须包含字母和数字且大于6位 UEditor 1.4.3版本中去掉本地自动保存功能 右键菜单没有新建文本文档txt 常见HTTP错误代码大全 http常见状态码 eclipse内存溢出错误 为什么井盖是圆的?--揭开面试题的神秘面目! Linux Centos 6.6搭建SFTP服务器 密码强度检测 JS判断检测用户输入密码强度代码 对程序员来说,提高薪水最好的建议是什么? CSS3仿淘宝右侧固定导航悬浮层 jQuery仿淘宝网登录拖动滑块验证码代码 jQuery单击div更

python 爬蟲 解析/正则匹配/乱码问题整理

今日爬取一听/扬天音乐都遇到了某些问题,现在对爬取过程中遇到的问题,做对于自己而言较为系统的补充与解释.主要问题有一下几点: 一:beautiful,urllib等库进行网页解析时,对于目标下的东西无法进行解析与显示 二:正则匹配虽然看过许多,但实际使用时仍然不够熟练,需要大量参考,故而,打算重新整理 三:对于乱码问题,曾在建mysql数据库时,头疼多次,现打算对于网页解析的乱码处理方法做些整理 这次目标是爬取扬天音乐"http://up.mcyt.net/",需要获取的内容有:歌曲名

iOS 中的正则匹配(工具类)

正则表达式 正则表达式是对字符串操作的一种逻辑公式, 用事先定义好的一些特定字符.及这些特定字符的组合, 组成一个"规则字符串", 这个"规则字符串"用来表达对字符串的一种过滤逻辑, 正则表达式就是用于描述这些规则的工具, 或者说, 正则表达式就是记录文本规则的代码. 在开发中, 我们经常会有查找符合某些复杂规则的字符串的需要, 比如数据校验: 判断用户的输入是否合法(如:用户注册的时候,QQ号码,电话号码,邮箱是否符合要求) 下面让我们先来看看正则匹配常用的一些字

利用Python正则匹配中文——爬取校园网公告栏中感兴趣的内容

写这个程序是因为校园网公告栏时不时会有学术报告,讲座之类的信息发布,但这类信息往往发布在讲座的前一天,以至于丢失很多重要消息.同时公告栏里也会发布一些跟学生无关的内容,比如工会主席会议啥的. 主要遇到的困难时对中文的正则匹配问题.(比如通过第一次正则可以提取到一个页面内的所有中文标题,第二次正则从这些中文标题中将能匹配上“报告”两个字的对象添加到结果list内) 学校公告页面是gb2312编码.我使用的方式是,整个工程使用utf-8编码,将需要匹配的关键字转换成utf-8编码格式,使用正则匹配u

js截取相应的域名----正则匹配法 和校验Url 正则表达式

js截取相应的域名----正则匹配法 和校验Url 正则表达式 用javascript截取相应的域名方法两种,供大家参考 1.方法1: [javascript] view plain copy function domainURI(str){ var durl=/http:\/\/([^\/]+)\//i; domain = str.match(durl); return domain[1]; } 调用:var domain=domainURI(document.location.href);

如何用正则匹配后缀名不为.jpg, .css, .js, .html, .htm, .png的文件

有网友碰到过这样的问题:如何用正则匹配后缀名不为.jpg, .css, .js, .html, .htm, .png的文件,问题详细内容为: 如何用正则匹配后缀名不为.jpg, .css, .js, .html, .htm, .png的文件 ? ,我搜你通过互联网收集了相关的一些解决方案,希望对有过相同或者相似问题的网友提供帮助,具体如下: 解决方案1: /.*\.(?:(?!(jpg|css|js|html|htm|png)).)+/ --- 共有 3 条评论 --- 皮总find . -ty

常用的JavaScript正则匹配规则代码收藏,很实用

收集一些常用的JavaScript正则表达式匹配规则,比如匹配电话号码.Email.中文字符.身份证号.邮编.QQ号.过滤空白行.匹配特定数字等.觉得这玩意是很有用的,只不过自己水平菜,老是自己写不出,看了这个文档,觉得心里踏实很多,用到正则匹配的时候,看下这个,相信为让你省不少时间.注:本正则不仅限于在JS中使用,其它语言也可以借鉴. 匹配特定数字: ^[1-9]\d*$ //匹配正整数 ^-[1-9]\d*$ //匹配负整数 ^-?[1-9]\d*$ //匹配整数 ^[1-9]\d*|0$

pcre库编写的正则匹配程序

使用的是Philip Hazel的Perl-Compatible Regular Expression库,参考: http://see.xidian.edu.cn/cpp/html/1428.html 执行匹配的时: gcc myreg.c ip.pat 内容: ip.*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ ip.txt 内容: 192.168.1.1 测试: ./a.out ip.pat ip.txt 下面是myreg.c源代码 /*  myreg.c  */ #inc

ruby 把字符串转为正则匹配表达式

需求 函数,需要通过参数传递字符串,用来做正则匹配 reg = '[0-9]+' def func(str, reg) str.scan(reg) end 由于 reg 在其它地方定义, reg 是字符串, 传进来后发现没法直接用于正则匹配 返回的结果总是 [] 空字符串. 解决 通过 Regexp 来通过 string 生成正则匹配的条件 def func)(str, reg) reg = Regexp.new("#{reg}"[0..-1]) "#{str}"