生活随笔
收集整理的這篇文章主要介紹了
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編碼格式:
SET NAMES utf8mb4
;
SET FOREIGN_KEY_CHECKS
= 0;
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 * from t_blog where title like ‘%html%’;
- select * from t_blog where title like ‘%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 * from t_blog where title like ‘%HTML%’;
- select * from t_blog where title like ‘%html%’;
由上述執行結果可以看出,單獨指定所需字段(比如,在此處 我所需要不區分大小寫的字段為表 ‘t_blog’ 中的 ‘title’ 字段)為 ‘utf8mb4’ 編碼格式,COLLATE 為utf8mb4_bin,可以使模糊查詢語句不區分大小寫;
本小白還有很多地方講解的不夠清楚明了,還請各位大佬指教!想更深入了解的可以參考大佬的博客(膜拜膜拜)mysql區分大小寫
總結
以上是生活随笔為你收集整理的mysql模糊查询语句怎么不区分大小写的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。