欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解MySQL查詢時區(qū)分字符串中字母大小寫的方法

 更新時間:2016年05月13日 15:27:28   作者:hudeyong926  
MySQL默認是不區(qū)分大小寫的,這個涉及到collate字符集與校驗規(guī)則方面的知識,下面會講到,這里我們就來詳解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)文章

最新評論