1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > mysql模糊查询语句怎么不区分大小写

mysql模糊查询语句怎么不区分大小写

时间:2022-10-25 02:20:34

相关推荐

mysql模糊查询语句怎么不区分大小写

近期,一直在忙着写一个小小的个人博客项目,在实现“全局搜索”功能时,一直想让“全局搜索”功能实现**“不区分大小写”**,方法介绍如下:

(在本小白的另外一篇博客中,介绍的比较详细,有兴趣的可以看一下:mysql模糊查询语句是否区分大小写?)

方法一:

设置“COLLATE”属性值为“utf8_general_ci”,mysql采用utf8mb4编码格式,模糊查询不区分大小写

方法二:

在创建表的时候,指定表字段COLLATE 为“utf8_general_ci”,或者修改指定表字段COLLATE 为“utf8_general_ci”;即,单独指定所需字段(比如,在此处 我所需要不区分大小写的字段为表 ‘t_blog’ 中的 ‘title’ 字段)为 ‘utf8mb4’ 编码格式,COLLATE 为“utf8_general_ci”:

alter table t_blog CHANGE `title` `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL;

alter table `t_blog` modify column `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL;

(选择其中一种修改方法既可)

还有一种修改mysql配置文件my.ini的方法,本小白非常不推荐此方法,所以在此不再介绍,有兴趣的小伙伴们可以了解一下:

mysql模糊查询语句是否区分大小写?

下面,对上述方法进行详细介绍:

解决方法一

如图所示,为了便于区分,让小伙伴们更好地理解,在此,本小白建立了两个一模一样的数据库,其中一个采用utf8编码格式,另外一个采用utf8mb4格式:

建表语句

建表语句采用utf8mb4编码格式:

blog_test2 : utf8mb4编码格式

SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for t_blog-- ----------------------------DROP TABLE IF EXISTS `t_blog`;CREATE TABLE `t_blog` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`appreciation` bit(1) NOT NULL,`comment_tabled` bit(1) NOT NULL,`content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,`create_time` datetime(0) NULL DEFAULT NULL,`first_picture` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`flag` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`published` bit(1) NOT NULL,`recommend` bit(1) NOT NULL,`share_statement` bit(1) NOT NULL,`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`update_time` datetime(0) NULL DEFAULT NULL,`views` int(11) NULL DEFAULT NULL,`type_id` bigint(20) NULL DEFAULT NULL,`user_id` bigint(20) NULL DEFAULT NULL,`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE,INDEX `FK292449gwg5yf7ocdlmswv9w4j`(`type_id`) USING BTREE,INDEX `FK8ky5rrsxh01nkhctmo7d48p82`(`user_id`) USING BTREE,CONSTRAINT `FK292449gwg5yf7ocdlmswv9w4j` FOREIGN KEY (`type_id`) REFERENCES `t_type` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,CONSTRAINT `FK8ky5rrsxh01nkhctmo7d48p82` FOREIGN KEY (`user_id`) REFERENCES `t_user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

数据库内容
查询结果
select * fromt_blogwheretitlelike ‘%html%’;

select * fromt_blogwheretitlelike ‘%HTML%’;

结论

mysql采用utf8mb4编码格式,模糊查询不区分大小写

解决方法二

方法

单独指定所需字段(比如,在此处 我所需要不区分大小写的字段为表 ‘t_blog’ 中的 ‘title’ 字段)为 ‘utf8mb4’ 编码格式,COLLATE 为utf8mb4_bin:

alter table t_blog CHANGE `title` `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL;

alter table `t_blog` modify column `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL;

结论
select * fromt_blogwheretitlelike ‘%HTML%’; select * fromt_blogwheretitlelike ‘%html%’;

由上述执行结果可以看出,单独指定所需字段(比如,在此处 我所需要不区分大小写的字段为表 ‘t_blog’ 中的 ‘title’ 字段)为 ‘utf8mb4’ 编码格式,COLLATE 为utf8mb4_bin,可以使模糊查询语句不区分大小写

本小白还有很多地方讲解的不够清楚明了,还请各位大佬指教!想更深入了解的可以参考大佬的博客(膜拜膜拜)mysql区分大小写

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。