最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入探究Mysql模糊查詢是否區(qū)分大小寫

 更新時間:2021年06月11日 12:09:59   作者:劭兮劭兮  
這篇文章主要給大家介紹了關(guān)于Mysql模糊查詢是否區(qū)分大小寫的相關(guān)資料,文中給出了5種解決方法以及各個方法的建議,需要的朋友可以參考下

前言

近期,一直在忙著寫一個小小的個人博客項目,在實現(xiàn) “全局搜索” 功能時,發(fā)現(xiàn)mysql模糊查詢語句有點兒神奇(本小白剛剛步入編程階段,所以可能讓大家見笑了,哈哈哈),有時候 mysql模糊查詢語句區(qū)分大小寫,有時候 mysql查詢語句又不區(qū)分度大小寫,于是,做了很多次實驗,得出以下結(jié)論(可能有不對的地方,歡迎大佬們可以指出我的不足,也歡迎小伙伴們可以一起討論問題!)

先來介紹一下COLLATE,COLLATE通常是和數(shù)據(jù)編碼(CHARSET)相關(guān)的,一般來說每種CHARSET都有多種它所支持的COLLATE,并且每種CHARSET都指定一種COLLATE為默認值。例如latin1編碼的默認COLLATE為latin1_swedish_cigbk編碼的默認COLLATE為gbk_chinese_ci,utf8mb4編碼的默認值為utf8mb4_general_ci

CHSRSET COLLATE
latin1 latin1_swedish_ci
gbk gbk_chinese_ci
utf8mb4 utf8mb4_general_ci
utf8 utf8_bin

有興趣的小伙伴,可以在navicate等數(shù)據(jù)庫可視化工具中,自己嘗試一下:




注意:mysql中有utf8utf8mb4兩種編碼,但是mysql中的utf8最多只能支持3bytes長度的字符編碼,所以,建議大家還是選擇utf8mb4編碼格式;

解決方法一

如圖所示,為了便于區(qū)分,讓小伙伴們更好地理解,在此,本小白建立了兩個一模一樣的數(shù)據(jù)庫,其中一個采用utf8編碼格式,另外一個采用utf8mb4格式:

區(qū)分大小寫

建表語句也采用utf8編碼格式:

建表語句

blog_test : utf8編碼格式

SET NAMES utf8;
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 utf8 COLLATE utf8_bin NULL,
  `create_time` datetime(0) NULL DEFAULT NULL,
  `first_picture` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `flag` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `published` bit(1) NOT NULL,
  `recommend` bit(1) NOT NULL,
  `share_statement` bit(1) NOT NULL,
  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin 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 utf8 COLLATE utf8_bin 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 = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

數(shù)據(jù)庫內(nèi)容

查詢結(jié)果 select * from t_blog where title like ‘%html%';

select * from t_blog where title like ‘%HTML%';

 

結(jié)論:

mysql采用utf8編碼格式,模糊查詢區(qū)分大小寫

不區(qū)分大小寫

建表語句

建表語句也采用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;

數(shù)據(jù)庫內(nèi)容

查詢結(jié)果 select * from t_blog where title like ‘%html%';

select

* from t_blog where title like ‘%HTML%';

 

結(jié)論

mysql采用utf8mb4編碼格式,模糊查詢不區(qū)分大小寫

解決方法二

 區(qū)分大小寫

方法

單獨指定所需字段(比如,在此處 我所需要區(qū)分大小寫的字段為表 ‘t_blog' 中的 ‘title' 字段)為 ‘utf8' 編碼格式,COLLATE 為“utf8_bin”;

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

結(jié)論

select * from t_blog where title like ‘%HTML%';

select * from t_blog where title like ‘%html%';

由上述執(zhí)行結(jié)果可以看出,此方法可以使模糊查詢語句區(qū)分大小寫

 不區(qū)分大小寫

方法

單獨指定所需字段(比如,在此處 我所需要不區(qū)分大小寫的字段為表 ‘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;

結(jié)論 select * from t_blog where title like ‘%HTML%';

select * from t_blog where title like ‘%html%';

由上述執(zhí)行結(jié)果可以看出,此方法可以使模糊查詢語句不區(qū)分大小寫;

解決辦法三

區(qū)分大小寫

方法

如圖所示,當(dāng)前 ‘t_blog' 表格的 ‘title' 字段的 COLLATE 為 ‘utf8mb4_general_ci' ,不區(qū)分大小寫

修改字段為BINARY:

alter table t_blog CHANGE `title` `title` varchar(255) BINARY NULL DEFAULT NULL;
alter table `t_blog` modify column `title` varchar(255) BINARY NULL DEFAULT NULL;

兩種修改方式選擇一種既可

結(jié)論

select * from t_blog where title like ‘%HTML%';

select * from t_blog where title like ‘%html%';

由上述執(zhí)行結(jié)果可以看出,修改字段為BINARY,可以使模糊查詢語句區(qū)分大小寫;

解決辦法四

區(qū)分大小寫

方法

如圖所示,當(dāng)前 ‘t_blog' 表格的 ‘title' 字段的 COLLATE 為 ‘utf8mb4_general_ci' ,不區(qū)分大小寫

查詢語句字段前面加BINARY:

select * from `t_blog` where BINARY `title` like '%html%';

結(jié)論

select * from t_blog where title like ‘%html%';

select * from t_blog where BINARY title like ‘%html%';

由上述執(zhí)行結(jié)果可以看出,在查詢語句字段前面加BINARY,可以使模糊查詢語句區(qū)分大小寫

解決辦法五

(特別特別不推薦,盡量不要使用)

找到mysql相應(yīng)版本下的my.ini文件,本小白對應(yīng)的8.0.17版本;


在文件最后一行加上下面一句話:

lower_case_table_names=1

注意:0:區(qū)分大小寫,1:不區(qū)分大小寫

重啟mysql

本小白還有很多地方講解的不夠清楚明了,還請各位大佬指教!想更深入了解的可以參考大佬的博客(膜拜膜拜)mysql區(qū)分大小寫

總結(jié)

到此這篇關(guān)于Mysql模糊查詢是否區(qū)分大小寫的文章就介紹到這了,更多相關(guān)Mysql模糊查詢大小寫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL分組查詢、排序查詢、分頁查詢以及執(zhí)行順序

    MySQL分組查詢、排序查詢、分頁查詢以及執(zhí)行順序

    MySQL數(shù)據(jù)查詢是數(shù)據(jù)庫操作中最常見的操作之一,它可以幫助我們從數(shù)據(jù)庫中獲取所需的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL分組查詢、排序查詢、分頁查詢以及執(zhí)行順序的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • Navicat for MySQL定時備份數(shù)據(jù)庫及數(shù)據(jù)恢復(fù)詳解

    Navicat for MySQL定時備份數(shù)據(jù)庫及數(shù)據(jù)恢復(fù)詳解

    這篇文章主要介紹了Navicat for MySQL定時備份數(shù)據(jù)庫及數(shù)據(jù)恢復(fù)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • mysql保存微信昵稱特殊字符的方法

    mysql保存微信昵稱特殊字符的方法

    我在用mysql 保存微信昵稱,當(dāng)插入昵稱數(shù)據(jù)的時候,報錯。接下來通過本文給大家介紹mysql保存微信昵稱特殊字符的方法,需要的朋友一起看看吧
    2018-06-06
  • MySQL內(nèi)存使用率高且不釋放問題排查與總結(jié)

    MySQL內(nèi)存使用率高且不釋放問題排查與總結(jié)

    這篇文章主要給大家介紹了MySQL內(nèi)存使用率高且不釋放問題排查與總結(jié),文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細,對大家解決問題有一定的幫助,需要的朋友可以參考下
    2024-09-09
  • mysql 表索引的一些要點

    mysql 表索引的一些要點

    這篇文章主要介紹了mysql 表索引的一些注意事項,mysql默認優(yōu)化不如sqlserver,所以需要優(yōu)化,而一些成熟的cms為了利益,也不會幫大家數(shù)據(jù)庫優(yōu)化的很好,需要自己另外設(shè)置
    2013-11-11
  • MySQL聚合查詢案例講解

    MySQL聚合查詢案例講解

    這篇文章主要介紹了MySQL聚合查詢案例講解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • MySQL中的兩種登錄方式詳解

    MySQL中的兩種登錄方式詳解

    這篇文章主要介紹了MySQL中的兩種登錄方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • MySQL5.6.22 綠色版 安裝詳細教程(圖解)

    MySQL5.6.22 綠色版 安裝詳細教程(圖解)

    本文通過圖文并茂的形式給大家介紹了MySQL5.6.22 綠色版 安裝詳細教程,非常不錯,具有一定的參考借鑒價值,感興趣的朋友一起看看吧
    2016-11-11
  • MySQL使用組合查詢的示例代碼

    MySQL使用組合查詢的示例代碼

    本文主要介紹了MySQL使用組合查詢的示例代碼,如何使用UNION操作符來組合SELECT語句,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • 在MySQL中奏響數(shù)據(jù)庫操作的樂章(推薦)

    在MySQL中奏響數(shù)據(jù)庫操作的樂章(推薦)

    本文詳細介紹了如何在MySQL中進行數(shù)據(jù)庫操作,包括創(chuàng)建、刪除、修改數(shù)據(jù)庫等,以及如何使用字符集和校驗規(guī)則,以及備份和恢復(fù)數(shù)據(jù)庫的方法,同時,還討論了如何查看和修改數(shù)據(jù)庫的結(jié)構(gòu)和數(shù)據(jù),總的來說,本文為讀者提供了一份全面的MySQL數(shù)據(jù)庫操作指南
    2024-10-10

最新評論

怀远县| 厦门市| 汉川市| 永顺县| 孟村| 天镇县| 西平县| 墨脱县| 甘谷县| 手机| 西吉县| 芒康县| 葫芦岛市| 百色市| 宁蒗| 宾阳县| 陕西省| 永城市| 前郭尔| 仪征市| 巍山| 田东县| 日土县| 景德镇市| 甘德县| 蒲城县| 菏泽市| 湟源县| 怀化市| 昌吉市| 兴宁市| 格尔木市| 曲麻莱县| 合作市| 麻江县| 集安市| 宁陵县| 彭泽县| 双城市| 新建县| 莫力|