需求:多选模糊查询,任选其一查出结果
-
1,3,4 是我们库里的,下拉框多选,选择了3个值
-
搜 1,搜出 前两条。
-
搜 2,搜出 第一条 和 第三条
-
搜2,4,搜出都会搜出来
1 1,2
2 1,3,4
3 2,4
CREATE TABLE `student` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `n1` (`name`) /*!50100 WITH PARSER `ngram` */
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- 难道新版mysql 默认的是ngram,还是 /*!50100 WITH PARSER `ngram` */这样就指定了?
FULLTEXT KEY `n1` (`name`) WITH PARSER ngram
实现1:全文检索
参考:https://blog.csdn.net/qq120631157/article/details/130079470文章来源:https://www.toymoban.com/news/detail-438554.html
注意配置:文章来源地址https://www.toymoban.com/news/detail-438554.html
[mysqld]
ft_min_word_len=1
ngram_token_size=1
innodb_ft_min_token_size=1
SELECT
*
FROM
student
WHERE
match ( name ) against ("2")
实现2:使用正则表达式查询
- 前端的参数替换一下
maintKind.replace(",", "|")
select * from products where pro_id REGEXP '1000|2000';
and dr.dispose_way REGEXP #{term.disposeWay}
- 参考文章:https://blog.csdn.net/qq120631157/article/details/130082537
实现3:使用mybaits循环
sql最终拼接 or pro_id like %1% or pro_id like %2%
- 重在实现方式的思考。查想要的资料,总能找到自己想要的。
其他关于索引的保存
show index from game -- 查询这个表的索引
repair table student quick; -- 重建索引
-- 创建索引
CREATE FULLTEXT INDEX ft_index ON student (name) WITH PARSER ngram
-- 查询 和 FULLTEXT 相关
SHOW VARIABLES LIKE 'ft%'
-- 查询 和 ngram 相关的
show variables like'%token%';
到了这里,关于【多选模糊查询】多选模糊查询, 全文检索 和 正则匹配,任选其一 查出结果的3种实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!