詳解MySQL查詢時區(qū)分字符串中字母大小寫的方法
如果你在mysql有唯一約束的列上插入兩行值'A'和'a',Mysql會認為它是相同的,而在oracle中就不會。就是mysql默認的字段值不區(qū)分大小寫?這點是比較令人頭痛的事。直接使用客戶端用sql查詢數(shù)據(jù)庫。 發(fā)現(xiàn)的確是大小不敏感 。
通過查詢資料發(fā)現(xiàn)需要設(shè)置collate(校對) 。
collate規(guī)則:
- *_bin: 表示的是binary case sensitive collation,也就是說是區(qū)分大小寫的
- *_cs: case sensitive collation,區(qū)分大小寫
- *_ci: case insensitive collation,不區(qū)分大小寫
關(guān)于字符集與校驗規(guī)則,mysql能:
1、使用字符集來存儲字符串,支持多種字符集;
2、使用校驗規(guī)則來比較字符串,同種字符集還能使用多種校驗規(guī)則來比較;
3、在同一臺服務(wù)器、同一個數(shù)據(jù)庫或者甚至在同一個表中使用不同字符集或校對規(guī)則來混合組合字符串;
4、可以在任何級別(服務(wù)器、數(shù)據(jù)庫、表、字段、字符串),定義不同的字符集和校驗規(guī)則。
強制區(qū)分大小寫
可以通過binary關(guān)鍵字,方法有兩種:
第一種:讓mysql查詢時區(qū)分大小寫
select * from usertable where binary id='AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h';
第二種:在建表時加以標識
create table `usertable`( `id` varchar(32) binary, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
或
CREATE TABLE `usertable` ( `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在mysql中,存在大小寫問題的地方還有:
(1) 關(guān)鍵字: 不區(qū)分大小寫 select * fRom table_name 和 select * from table_name 效果是一樣的
(2) 標示符(如數(shù)據(jù)庫名稱和表名稱):不區(qū)分大小寫。如存在表users,那么select * from users和select * from uSers 效果一樣。網(wǎng)上說這跟操作系統(tǒng)有關(guān),在所有Unit操作系統(tǒng)(除了使用HFS+的Mac OS 之外)上都是區(qū)分大小寫的,而在windows上是不區(qū)分大小寫的。(網(wǎng)上的這一說法沒有驗證過,我在windows server2003上是不區(qū)分大小寫的)
(3) 表的別名:不區(qū)分大小寫 select m.* from users m where M.username = 'aa';
(4) 列的別名:不區(qū)分大小寫 select uName from (select username as uname from users where id = 768) ;
相關(guān)文章
解析MySQL的information_schema數(shù)據(jù)庫
本篇文章是對MySQL的information_schema數(shù)據(jù)庫進行了詳細的分析介紹,需要的朋友參考下2013-06-06MyBatis-Plus查詢不到數(shù)據(jù)但使用SQL可以查詢到數(shù)據(jù)的問題排查解決
在使用MyBatis-Plus時,有時會出現(xiàn)查詢不到數(shù)據(jù)的問題,而直接執(zhí)行SQL卻能查詢到數(shù)據(jù),本文將介紹如何排查和解決這一問題,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-09-09mysql 5.7.18 安裝配置方法圖文教程(CentOS7)
這篇文章主要為大家詳細介紹了CentOS 7下mysql 5.7.18 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04詳解Mysql數(shù)據(jù)庫平滑擴容解決高并發(fā)和大數(shù)據(jù)量問題
本文主要介紹了Mysql數(shù)據(jù)庫平滑擴容解決高并發(fā)和大數(shù)據(jù)量問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05MySQL定時任務(wù)不能正常執(zhí)行的原因分析及解決方法
大家好,本篇文章主要講的是MySQL定時任務(wù)不能正常執(zhí)行的原因分析及解決方法,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12