mysql正则通配符全解,Mysql——通配符和正则表达式的使用
%表示任何字符出现任意次数。
查询出表TABLE中NAME字段中任意位置包含i的行:
select * from TABLE where NAME like '%i%'
查询出表TABLE中NAME字段中
1.like操作符和百分号通配符 %表示任何字符出现任意次数。 查询出表TABLE中NAME字段中任意位置包含i的行: select * from TABLE where NAME like '%i%' 查询出表TABLE中NAME字段中开头位置包含i的行: select * from TABLE where NAME like 'i%' 查询出表TABLE中NAME字段中结尾位置包含i的行 select * from TABLE where NAME like '%i' 注意:%不能匹配NULL;有一些字段首尾可能会出现空格,为了避免影响匹配结果,可以是同LTrim和RTrim函数去掉首尾的空格。 2.下划线通配符 下划线通配符只代表一个字符。 使用方法和%一样,比如查询出表TABLE中NAME为‘AAA’开头的四个字母的行 select * from TABLE where NAME like 'AAA_' 3.正则表达式 除了使用like进行模糊匹配,还可以使用正则表达式进行模糊匹配。 正则表达式操作符:REGEXP 3.1基本字符匹配 查询出表TABLE中,字段NAME以A结尾的且只有两个字母的所有行: select * from TABLE where NAME regexp '.A' .是正则表达式的特殊字符,代表匹配任意一个字符。 3.2进行或(OR)匹配 查询出表TABLE中,字段NAME为AAA或BBB的行: select * from TABLE where NAME regexp 'AAA|BBB' |为正则表达式的或操作符。 3.3匹配多个字符 查询出表TABLE中,字段NAME以A或B或C开头,且结尾为DD的行: select * from TABLE where NAME regexp '[ABC]DD' [ABC]定义一组字符,意思是:匹配A或B或C。 3.4范围匹配 查询出表TABLE中,字段NAME以1到9开头,且结尾为A的行: select * from TABLE where NAME regexp '[1-9]A' [1-9]意为:匹配1到9任意数字,[a-z]意为匹配任意字符。 3.5匹配特殊字符 这种问题几乎在每种语言中都会出现mysql通配符使用,即需要查询的内容中包含特殊字符。这时候就需要转义了。 在mysql中转义符为\\ 查询出表TABLE中,NAME字段包含.的行: select * from TABLE where NAME regexp '\\.' 3.6正则表达式常用元字符 注意:正则表达式匹配不区分大小写,如果需要区分在regexp后面加上关键字:binary 原文出处: (编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |