MySQL 多个%等模糊查询功能实现

目录

一、建表并插入数据

1、创建一个people表

2、向people表添加数据

二、查询语句


一、建表并插入数据

1、创建一个people表

DROP TABLE IF EXISTS `people`;

CREATE TABLE `people`  (

  `id` int NOT NULL COMMENT '主键',

  `name` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '姓名',

  `sex` tinyint NOT NULL COMMENT '性别',

  `age` int NOT NULL COMMENT '年龄',

  `phone` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '联系方式',

  PRIMARY KEY (`id`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

2、向people表添加数据

insert into people values(1,'测试人员',18,1,'13812345678');

insert into people values(2,'测测人员',19,0,'13812345679');

insert into people values(3,'人员测试',20,1,'13812345680');

insert into people values(4,'测试人员1',21,0,'13812345681');

insert into people values(5,'员人试测',22,1,'13812345682');

二、查询语句

1、模糊查询(单个条件)

select * from people where name like '%测%';

2、模糊查询(多个条件)

select * from people where name like '%测%' and name like '%人%';

3、模糊查询(顺序执行)

select * from people where name like '%测%人%';

4、_: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句

select * from people where name like '测试人员_';

注:mysql 通配符查询必须用 rlike

5、[ ]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

select * from people where name rlike '[试]人员';

6、[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符 ^ 非。

select * from people where name rlike '[^试]人员';

7、^:以xx开头的记录

select * from people where name rlike '^测';

8、$:以xx结尾的记录

select * from people where name rlike '员$';

9、.:任意单个的

select * from people where name rlike '.人员';

MySQL中,实现模糊查询多个值可以通过多种方式完成,具体取决于你要查询的字段和匹配的模式。以下是几种常见的方法: 1. **使用多个LIKE语句和OR操作符**: 如果你要在同一个字段中查找多个匹配项,可以使用多个LIKE语句,并通过OR操作符连接它们。 ```sql SELECT * FROM table_name WHERE column_name LIKE '%value1%' OR column_name LIKE '%value2%' OR column_name LIKE '%value3%'; ``` 2. **使用IN操作符和通配符**: 虽然IN操作符本身不支持通配符,但你可以结合LIKE和IN操作符使用,或者使用正则表达式。 ```sql SELECT * FROM table_name WHERE column_name LIKE '%value1%' OR column_name LIKE '%value2%' OR column_name LIKE '%value3%'; ``` 或者使用正则表达式: ```sql SELECT * FROM table_name WHERE column_name REGEXP 'value1|value2|value3'; ``` 3. **使用全文索引**: 如果你的MySQL版本支持全文索引,并且你在字段上创建了全文索引,可以使用MATCH...AGAINST语句进行模糊查询。 ```sql SELECT * FROM table_name WHERE MATCH(column_name) AGAINST('value1 value2 value3' IN BOOLEAN MODE); ``` 4. **使用CONCAT函数和LIKE**: 你可以使用CONCAT函数将多个匹配项连接起来,并在查询中使用LIKE。 ```sql SELECT * FROM table_name WHERE CONCAT(column_name, ' ') LIKE '%value1%' OR CONCAT(column_name, ' ') LIKE '%value2%' OR CONCAT(column_name, ' ') LIKE '%value3%'; ``` 这些方法各有优缺点,具体选择哪种方法取决于你的具体需求和数据量。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生若梦777

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值