Mysql如何使得字段内容不区分大小写

  介绍

本篇内容介绍了“Mysql如何使得字段内容不区分大小写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

  造成存储的时候按大小写存储,但是检索的时候不区分大小写。这个也是在Oracle的默认情况不一致的,甲骨文统一使用区分大小写的编码方式,所以在默认情况和Oracle数据库是有区别的。
1。插入& # 39;ab # 39;, & # 39; ab # 39;两条记录
root@test 09:11:51>插入测试值(3 & # 39;ab # 39;);
查询好了,1行影响(0.01秒)


root@test 09:12:15>插入测试值(3 & # 39;ab # 39;);
查询好了,1行影响(0.01秒)


root@test 09:12:39> select *从测试;
+ - - - - - - - - - - - - + +
| id,| |名称
+ - - - - - - - - - - - - + +
|,aa11, 1 | |
|,1234年,2 | |
|,3 | Ab大敌;|
|,3 | ab大敌;|
+ - - - - - - - - - - - - +
4行组(0.00秒)
2。按& # 39;ab # 39;检索返回两条记录,如果是甲骨文则只会返回一条数据。
root@test 09:12:43> select *从测试名称=& # 39;ab # 39;;
+ - - - - - - - - - - - - + +
| id,| |名称
+ - - - - - - - - - - - - + +
|,3 | Ab大敌;|
|,3 | ab大敌;|
+ - - - - - - - - - - - - +
2行组(0.00秒)


3。查看gbk的当前编码格式排序是gbk_chinese_ci,即大小写不敏感,存储的二进制编码都是一样的,
,所以在哪里子句中传入& # 39;ab # 39; & # 39; ab # 39;,都会事先翻译成相同的编码,所以返回两条记录。
root@information_schema 10:13:57> select *从表table_schema=& # 39;测试# 39;和table_name=& # 39;测试# 39;\ G
* * * * * * * * * * * * * * * * * * * * * * * * * * * 1。行* * * * * * * * * * * * * * * * * * * * * * * * * * *
,TABLE_CATALOG: def
,,TABLE_SCHEMA:测试
,,,TABLE_NAME:测试
,,,TABLE_TYPE:基本表
,,,,,引擎:InnoDB
,,,,版本:10
,,紧凑,ROW_FORMAT:
,,,TABLE_ROWS: 5
, AVG_ROW_LENGTH: 3276
,,DATA_LENGTH: 16384
MAX_DATA_LENGTH: 0
,,INDEX_LENGTH: 0
,,,DATA_FREE: 0
, AUTO_INCREMENT:空
,,CREATE_TIME: 2016-08-18 11:14:42
,,UPDATE_TIME:空
,,,CHECK_TIME:空
TABLE_COLLATION: gbk_chinese_ci
,,,,校验和:空
, CREATE_OPTIONS:
,TABLE_COMMENT:


——证明都是按小写来存储的。
root@information_schema 10:23:02> ascii(名字),选择id test.test;
+ - - - - - - - - - - - - - - - - - - - +
| ascii(名字)| id,|
+ - - - - - - - - - - - - - - - - - - - +
|,,,,97 |大敌;,1 |
|,,,,49 |大敌;,2 |
|,,,,65 |大敌;,3 |
|,,,,97 |大敌;,3 |
|,,,,49 |大敌;12 |
+ - - - - - - - - - - - - - - - - - - - +


4。如何设置好数据库,使得能够对于字段值区分大小写:要把编码模式设置为非缺省值的整理=gbk_bin
root@test 01:34:58>创建表(名称varchar(10))引擎=InnoDB默认字符集=gbk整理=gbk_bin;
查询好,0行影响(0.01秒)


root@test 01:35:06>插入一个值(& # 39;一个# 39;);
查询好了,1行影响(0.00秒)


root@test 01:35:16>插入一个值(& # 39;一个# 39;);
查询好了,1行影响(0.00秒)


root@test 01:35:20> select *的名字=& # 39;一个# 39;;
+——+
| |名称
+——+
|,,|
+——+
1行组(0.00秒)


root@test 01:35:30> select *的名字=& # 39;一个# 39;;
+——+
| |名称
+——+
|,,|
+——+
1行组(0.00秒)


root@test 01:35:35>创建表b(名字varchar (10));
查询好,0行影响(0.00秒)

备注:,
utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。

utf8_genera_ci不区分大小写,ci为不分大小写的缩写,即大小写不敏感。

utf8_general_cs区分大小写,cs为区分大小写的缩写,即大小写敏感。

Mysql如何使得字段内容不区分大小写