mysql语句匹配站点号_mysql-关于匹配查询-正则的使用

刚新建了一个表命名为:like-test,在实例查询时发现对于类似的表名,查询要使用``括起来,即键盘左上角Esc键下面那个键的英文输入符号,中文打出来的是两个点

一、SQL模式

SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。

在 MySQL中,SQL的模式缺省是忽略大小写的。

select 字段 from 表 where 某字段 like 条件

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

比如select * from [user] where u_name like ‘%三%',将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。

另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件

select * from [user] where u_name like ‘%三%' AND u_name like ‘%猫%'

若使用select * from [user] where u_name like ‘%三%猫%'虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

2、_:表示任意单个字符。匹配单个任意字符,常用作占位符

比如select * from [user] where u_name like ‘_三_',只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;

再比如select * from [user] where u_name like ‘三__';只找出“三脚猫”这样name为三个字且第一个字是“三”的;

二、正则模式

模式什么模式匹配

^

字符串的开始

$

字符串的结尾

.

任何单个字符

[...]

在方括号内的任何字符列表

[^...]

非列在方括号内的任何字符

p1|p2|p3

交替匹配任何模式P1,P2或P3

*

零个或多个前面的元素

+

前面的元素的一个或多个实例

{n}

前面的元素的n个实例

{m,n}

m到n个实例前面的元素

建表如下:

create table tb1(

id int not null primary key auto_increment,

pname char not null,

number int not null,

age int(3) not null,

major char not null

);

插入数据

INSERT INTO `tb1` (`pname`,`number`,`age`,`major`) VALUES ('jack',123456,18,'math');

INSERT INTO `tb1` (`pname`,`number`,`age`,`major`) VALUES ('tom',456789,19,'computer');

INSERT INTO `tb1` (`pname`,`number`,`age`,`major`) VALUES ('lin',1717171,20,'economic');

INSERT INTO `tb1` (`pname`,`number`,`age`,`major`) VALUES ('dong',1987416,27,'computer');

模式字符  ^

其含义为匹配以特定字符或者字符串开头的记录。

例如:使用“^”表达式查询tb1中major字段以m开头的记录,则语句如下:

Select major from tb1 where major regexp ‘^m’;  #输出major

模式字符   $

其含义为匹配以特定字符或者字符串结尾的记录。

例如:使用“$”表达式查询tb1中major字段以c结尾的记录,则语句如下:

Select major from tb1 where major regexp ‘c$’;        #输出 ecomonic

模式字符   .

其含义为匹配字符串中任意一个字符,包括回车或者换行等。

例如:使用“.”表达式查询tb1中number字段包含4的记录,则语句如下:

Select number from tb1 where number regexp ‘4.’;  #输出带4的记录

模式字符   [字符集合]

其含义为匹配字符集合中任意一个字符

例如:使用“[ ]”表达式查询tb1中number字段包含456的记录,则语句如下:([]表示只要查询条件只要满足任意一个就作输出)

Select number from tb1 where number regexp ‘[456]’;   #

模式字符     S1|S2|S3

其含义为匹配 S1、S2、S3中的任意一个字符串

例如:查询tb1中major字段包含a、p或者mic字符中任意一个字符的记录,则语句如下:

Select * from tb1 where major regexp ‘a|p|mic’;   #等同于select * from tb1 where major regexp '[a,p,mic]';

模式字符   *

其含义为匹配多个该字符之前的字符,包括0和1个。

例如:使用“*”表达式查询tb1中major字段中m字符前出现c字符的记录,则语句如下:

Select major from tb1 where major regexp ‘c*m’;

模式字符   +

其含义为匹配多个该字符之前的字符,包括 1个。

例如:使用“+”表达式查询tb1中major字段中m字符前至少出现一个c字符的记录,则语句如下:

Select major from tb1 where major regexp ‘c+m’;

模式字符   字符串{N}

其含义为匹配字符出现N次。

例如:使用“{N}”表达式查询tb1中major字段中连续出现2次m的记录,则语句如下:

Select major from tb1 where major regexp ‘m{2}’;

模式字符   字符串{M,N}

其含义为匹配字符至少出现M次,做多N次。

例如:使用“{M,N}”表达式查询tb1中major字段中连续出现2次m的记录,最多出现3次m字符的记录,则语句如下:

Select major from tb1 where major regexp ‘a{2,3}’;

10.模式匹配 字符串[^...]

其含义为匹配不包含[]中的内容

select major from tb1 where major regexp '[^math]';

举例时验证时发现用这种匹配时,条件必须为完整字段值,或者匹配不出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值