加入收藏 | 设为首页 | 会员中心 | 我要投稿 随州站长网 (https://www.0722zz.cn/)- 数据可视化、数据开发、智能机器人、智能内容、图像分析!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql怎样使得字段内容不区分大小写

发布时间:2022-01-19 13:44:25 所属栏目:MySql教程 来源:互联网
导读:本篇内容介绍了Mysql如何使得字段内容不区分大小写的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 造成存储的时候按大小写存储,但是检索的时候不
       本篇内容介绍了“Mysql如何使得字段内容不区分大小写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
 
       造成存储的时候按大小写存储,但是检索的时候不区分大小写. 这个也是在Oracle的默认情况不一致的,oracle 统一使用区分大小写的编码方式。所以在默认情况和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则只会返回一条数据。
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, 即大小写不敏感, 存储的二进制编码都是一样的,
 所以在where子句中传入'ab', 'aB',都会事先翻译成相同的编码,所以返回两条记录。
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:
 
 
--证明都是按小写来存储的。
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. 如何设置好数据库,使得能够对于字段值区分大小写: 要把编码模式设置为非缺省值的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将字符串中的每一个字符用二进制数据存储,区分大小写。
 
utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感。
 
utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感。
 
“Mysql如何使得字段内容不区分大小写”的内容就介绍到这里了,感谢大家的阅读。

(编辑:随州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读