国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

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

2024-07-24 13:09:28
字體:
來源:轉載
供稿:網友
MySQL默認是不區分大小寫的,這個涉及到collate字符集與校驗規則方面的知識,下面會講到,這里我們就來詳解MySQL查詢時區分字符串中字母大小寫的方法.
 

如果你在mysql有唯一約束的列上插入兩行值'A'和'a',Mysql會認為它是相同的,而在oracle中就不會。就是mysql默認的字段值不區分大小寫?這點是比較令人頭痛的事。直接使用客戶端用sql查詢數據庫。 發現的確是大小不敏感 。
通過查詢資料發現需要設置collate(校對) 。 
collate規則:

  • *_bin: 表示的是binary case sensitive collation,也就是說是區分大小寫的
  • *_cs: case sensitive collation,區分大小寫
  • *_ci: case insensitive collation,不區分大小寫

關于字符集與校驗規則,mysql能:

1、使用字符集來存儲字符串,支持多種字符集;
2、使用校驗規則來比較字符串,同種字符集還能使用多種校驗規則來比較;
3、在同一臺服務器、同一個數據庫或者甚至在同一個表中使用不同字符集或校對規則來混合組合字符串;
4、可以在任何級別(服務器、數據庫、表、字段、字符串),定義不同的字符集和校驗規則。

強制區分大小寫

可以通過binary關鍵字,方法有兩種:
第一種:讓mysql查詢時區分大小寫

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) 關鍵字: 不區分大小寫 select * fRom table_name 和 select * from table_name 效果是一樣的
(2) 標示符(如數據庫名稱和表名稱):不區分大小寫。如存在表users,那么select * from users和select * from uSers 效果一樣。網上說這跟操作系統有關,在所有Unit操作系統(除了使用HFS+的Mac OS 之外)上都是區分大小寫的,而在windows上是不區分大小寫的。(網上的這一說法沒有驗證過,我在windows server2003上是不區分大小寫的)
(3) 表的別名:不區分大小寫 select m.* from users m where M.username = 'aa';
(4) 列的別名:不區分大小寫 select uName from (select username as uname from users where id = 768) ;



注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 道孚县| 安阳市| 牙克石市| 乾安县| 乌兰浩特市| 会昌县| 罗甸县| 彭山县| 浦东新区| 建水县| 逊克县| 旬阳县| 察雅县| 富裕县| 依安县| 中宁县| 贡嘎县| 新干县| 包头市| 长宁区| 九龙城区| 通辽市| 台北市| 黄梅县| 秦皇岛市| 南安市| 黎城县| 平阳县| 金门县| 东宁县| 红河县| 射洪县| 河西区| 阳城县| 江达县| 桐乡市| 惠安县| 赣榆县| 绵竹市| 镇原县| 达拉特旗|