五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

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

發(fā)布日期:2022-02-11 08:52 | 文章來(lái)源:腳本之家

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

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

CHSRSET COLLATE
latin1 latin1_swedish_ci
gbk gbk_chinese_ci
utf8mb4 utf8mb4_general_ci
utf8 utf8_bin

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




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

解決方法一

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

區(qū)分大小寫

建表語(yǔ)句也采用utf8編碼格式:

建表語(yǔ)句

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ù)庫(kù)內(nèi)容

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

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

結(jié)論:

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

不區(qū)分大小寫

建表語(yǔ)句

建表語(yǔ)句也采用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ù)庫(kù)內(nèi)容

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

select

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

結(jié)論

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

解決方法二

區(qū)分大小寫

方法

單獨(dú)指定所需字段(比如,在此處 我所需要區(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é)果可以看出,此方法可以使模糊查詢語(yǔ)句區(qū)分大小寫;

不區(qū)分大小寫

方法

單獨(dú)指定所需字段(比如,在此處 我所需要不區(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é)果可以看出,此方法可以使模糊查詢語(yǔ)句不區(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,可以使模糊查詢語(yǔ)句區(qū)分大小寫;

解決辦法四

區(qū)分大小寫

方法

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

查詢語(yǔ)句字段前面加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é)果可以看出,在查詢語(yǔ)句字段前面加BINARY,可以使模糊查詢語(yǔ)句區(qū)分大小寫

解決辦法五

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

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


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

lower_case_table_names=1

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

重啟mysql

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

總結(jié)

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

美國(guó)服務(wù)器租用

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開(kāi)通

自選配置、實(shí)時(shí)開(kāi)通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問(wèn)服務(wù)

1對(duì)1客戶咨詢顧問(wèn)

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部