本篇內容介紹了“如何使得字段內容不區分大小寫(xiě)”的有關(guān)知識,在實(shí)際案例的操作過(guò)程中,不少人都會(huì )遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學(xué)有所成!
造成存儲的時(shí)候按大小寫(xiě)存儲,但是檢索的時(shí)候不區分大小寫(xiě). 這個(gè)也是在Oracle的默認情況不一致的,oracle 統一使用區分大小寫(xiě)的編碼方式。所以在默認情況和oracle數據庫是有區別的。
1. 插入 'Ab', 'ab'兩條記錄
root@test 09:11:51>insert into test values(3, 'Ab');
Query OK, 1 row affected (0.01 sec)
root@test 09:12:15>insert into test values(3,'ab');
Query OK, 1 row affected (0.01 sec)
root@test 09:12:39>select * from test;
+------+------+
| id | name |
+------+------+
| 1 | aa11 |
| 2 | 1234 |
| 3 | Ab |
| 3 | ab |
+------+------+
4 rows in set (0.00 sec)
2. 按 'ab'檢索返回兩條記錄,如果是Oracle則只會(huì )返回一條數據。
root@test 09:12:43>select * from test where name='ab';
+------+------+
| id | name |
+------+------+
| 3 | Ab |
| 3 | ab |
+------+------+
2 rows in set (0.00 sec)
3. 查看gbk的當前編碼格式COLLATION是gbk_chinese_ci, 即大小寫(xiě)不敏感, 存儲的二進(jìn)制編碼都是一樣的,
所以在where子句中傳入'ab', 'aB',都會(huì )事先翻譯成相同的編碼,所以返回兩條記錄。
root@information_schema 10:13:57>select * from tables where table_schema='test' and table_name='TEST' \G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: test
TABLE_TYPE: BASE TABLE
ENGINE: InnoDB
VERSION: 10
ROW_FORMAT: Compact
TABLE_ROWS: 5
AVG_ROW_LENGTH: 3276
DATA_LENGTH: 16384
MAX_DATA_LENGTH: 0
INDEX_LENGTH: 0
DATA_FREE: 0
AUTO_INCREMENT: NULL
CREATE_TIME: 2016-08-18 11:14:42
UPDATE_TIME: NULL
CHECK_TIME: NULL
TABLE_COLLATION: gbk_chinese_ci
CHECKSUM: NULL
CREATE_OPTIONS:
TABLE_COMMENT:
--證明都是按小寫(xiě)來(lái)存儲的。
root@information_schema 10:23:02>select ascii(name), id from test.test;
+-------------+------+
| ascii(name) | id |
+-------------+------+
| 97 | 1 |
| 49 | 2 |
| 65 | 3 |
| 97 | 3 |
| 49 | 12 |
+-------------+------+
4. 如何設置好數據庫,使得能夠對于字段值區分大小寫(xiě): 要把編碼模式設置為非缺省值的COLLATE=gbk_bin
root@test 01:34:58>create table a(name varchar(10) ) ENGINE=InnoDB DEFAULT CHARSET=gbk COLLATE=gbk_bin;
Query OK, 0 rows affected (0.01 sec)
root@test 01:35:06>insert into a values('a');
Query OK, 1 row affected (0.00 sec)
root@test 01:35:16>insert into a values('A');
Query OK, 1 row affected (0.00 sec)
root@test 01:35:20>select * from a where name='a';
+------+
| name |
+------+
| a |
+------+
1 row in set (0.00 sec)
root@test 01:35:30>select * from a where name='A';
+------+
| name |
+------+
| A |
+------+
1 row in set (0.00 sec)
root@test 01:35:35>create table b (name varchar(10));
Query OK, 0 rows affected (0.00 sec)
備注:
utf8_bin將字符串中的每一個(gè)字符用二進(jìn)制數據存儲,區分大小寫(xiě)。
utf8_genera_ci不區分大小寫(xiě),ci為case insensitive的縮寫(xiě),即大小寫(xiě)不敏感。
utf8_general_cs區分大小寫(xiě),cs為case sensitive的縮寫(xiě),即大小寫(xiě)敏感。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站