mysql正则查询 模糊查询

-- ==============正则查询================
/*
SQL默认是忽略大小写的
正则模式使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。正则即字段值包含正则的内容即可
.      匹配任何单个的字符,表示任意单字符
[...]  匹配包含方括号内某单个字符的字符串,[0-9]匹配0到9之间的某个数字
*      匹配零个或多个在它前面的字符
{n}    匹配n个在它前面的字符

如果希望大小写都匹配上可以这样写。[aA] 匹配大小写的 a,[a-zA-Z] 则匹配大小写的任何 a-z 单个字母。
但默认是不区分大小写的 [b] 也可匹配上还有 B 的字符串
要匹配的字符在字段起始处,使用 ^ ,在字段的结尾用 $
如果是中文字符,可能在使用时需要注意一下。

*/
-- 字段name只有四个值,name_aA ,name_aB , name_人人 ,name_%好好_

SELECT * FROM `test_t` WHERE NAME REGEXP ‘[a-z]‘;     -- 包含a到z某个字符的字符串,能匹配到 name_aA 和 name_aB 和 name_人人 和 name_%好好_

SELECT * FROM `test_t` WHERE NAME REGEXP ‘^n.....b$‘; -- 以n开头B结尾,7个字符长度的字符串,能匹配到 name_aB

SELECT * FROM `test_t` WHERE NAME RLIKE ‘d*‘;        -- 包含0个或多个d的字符串,能匹配到该字段的所有值,因为 * 前的字符0个也匹配

SELECT * FROM `test_t` WHERE NAME RLIKE ‘B{1}$‘;     -- 结尾是一个B,能匹配到name_aB

-- ==============模糊查询================
-- MySql的like语句中的通配符:百分号、下划线和escape

-- %    表示任意个或多个任意字符。可匹配任意类型和长度的字符。

SELECT * FROM `test_t` WHERE NAME LIKE ‘%me_aB‘; -- 查询结果 name_aB

-- 如果需要找出 name 中既有 b 又有 a 的记录,使用 and 条件
SELECT * FROM `test_t` WHERE NAME LIKE ‘%b%‘ AND NAME LIKE ‘%a%‘;
-- 若使用 SELECT * FROM `test_t` WHERE NAME LIKE ‘%b%a%‘; 则找不到 name_aB

-- _    表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句(可以代表一个中文字符)

SELECT * FROM `test_t` WHERE NAME LIKE ‘_______‘; -- 能查询到 name_aA 和 name_aB 还有 name_人人 这7个字符长度的值

-- 如果要查字符 % 或者 _ 使用 ESCAPE,转义字符后面的 % 或 _ 就不作为通配符了,注意前面没有转义字符的%和_仍然起通配符作用
SELECT * FROM `test_t` WHERE NAME LIKE ‘name_/%%好/_‘ ESCAPE ‘/‘; -- 查询结果 name_%好好_
时间: 2024-10-24 15:15:34

mysql正则查询 模糊查询的相关文章

mysql中的模糊查询

转载自:http://www.letuknowit.com/archives/90/ MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或RLIKE/NOT RLIKE,它们是同义词). 第一种是标准的SQL模式匹配.它有2种通配符:“_”和“%”.“_”匹配任意单个字符,而“%”匹配任意多个字符(包括0个).举例如下: SELECT * FROM table_name WHERE column_name LIKE ‘m%’; #查询

PHP MYSQL登陆和模糊查询

PHP MYSQL登陆和模糊查询 PHP版本 5.5.12    MYSQL版本 5.6.17  Apache 2.4.9 用的wampserver 一.PHPMYSQL实现登陆:  一共含有两个文件:login.php和logincheck.php; 表单代码: <form action="logincheck.php"method="post"> Yonghu:<inputtype="text" name="use

参数化查询模糊查询

1.参数化查询模糊查询 sql语句: create proc procegDataAp( @UserName nvarchar(50))asselect * from users where [email protected] 给参数赋值 new SqlParameter("@UserName","%"+TxtsUserName.Text.Trim()+"%") 1 <%@ Page Language="C#" Auto

python中的mysql数据库like模糊查询

近期工作在使用python语言开发项目,工作中遇到了一个python连接mysql的like查询. 因为%在python中三个特殊的符号,如%s.%d分别代表了字符串占位符和数字占位符. 大家知道.mysql的模糊查询也须要用到%. 我们有一张test表,要对name字段进行模糊查询,预期的sql例如以下: select * from test where name like '%abc%'; 那么python中怎么写呢? sql = "select * from test where name

mysql进阶 六 模糊查询的四种用法介绍

mysql中模糊查询的四种用法介绍 这篇文章主要介绍了mysql中模糊查询的四种用法,需要的朋友可以参考下. 下面介绍mysql中模糊查询的四种用法: 1%: 表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为“张三”,“张猫三”.“三脚猫”,“唐三藏”等等有“三”的记录全找出来. 另外,如果需要找出u_name中既有“三”又有

MySQL多项模糊查询

最近有个需求,就是要根据搜索框里面的关键字,找到符合条件的数据. 如果是单个条件的话,其实就是一个普通的select语句. 但是需求是这个关键字,要在id,desc,step等多个字段模糊查找. 然后最直观的一个思路肯定就是: select * from t_bug where `id` like %key% or `desc` like %key% or `step` like %key% 对一条记录,要对id.desc.step三项都判断一下符不符合key. 缺点:需求只有三个记录,如果是多

2016/3/13 七种查询 (普通查询 条件查询 排序查询 模糊查询 统计查询 分组查询 分页查询 )

一句话概括的话,SQL作为结构化查询语言,是标准的关系型数据库通用的标准语言: T-SQL 是在SQL基础上扩展的SQL Server中使用的语言 1,普通查询 #查询Info表中的所有列 select * from Info #查询Info表中的Name和Code列 select Name,Code from Info 2,条件查询 关键字where #查询Info表的左右列 限定范围 列名为p001 select * from Info where 列名="p001" #查询条件之

thinkphp 条件查询 模糊查询 区间查询 in 查询 与自定义查询

eq => '=' $map['id']= array('eq','2'); neq => '<>' $map['id']=array('neq',2); gt => '>' $map['id']=array('gt',3); egt => '>=' $map['id']=array('egt',3); lt => '<' $map['id']=array('lt',3); elt => '<=' $map['id']= array(

sqlserver_query3_去重查询|模糊查询|排序|分组|使用函数

时间:2017-09-29 整理:byzqy 本篇仍以"梁山好汉"数据表为例,介绍几个常用的 T-SQL 查询语句: 去重查询,关键字:distinct 使用通配符模糊查询,关键字:like,通配符:% 排序查询(升序.降序),关键字:order by.desc 分组查询,关键字:group by 使用函数,关键字:max.avg 规定要返回的记录的数目,关键字:top 文件:SQLQuery3.sql /* 说明: SQLQuery3.sql (这是在SQL Server Manag