欢迎来到阿里云授权服务中心典名科技有限公司!咨询电话:023-66887777 18623333330

微信
手机版
网站地图

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

2021-08-25 10:30:36 投稿人 : admin 围观 : 304 次 0 评论

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

造成存储的时候按大小写存储,但是检索的时候不区分大小写. 这个也是在Oracle的默认情况不一致的,oracle 统一使用区分大小写的编码方式。所以在默认情况和oracle数据库是有区别的。

未标题-1.jpg


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如何查询当前登录的用户
    mysql如何查询当前登录的用户

    本文小编为大家详细介绍“mysql如何查询当前登录的用户”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql如何查询当前登录的用户”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。方法:1、用USER()函数,...

    2022-05-18 10:01:01
  • mysql如何查询外键约束
    mysql如何查询外键约束

    这篇文章主要介绍了mysql如何查询外键约束的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql如何查询外键约束文章都会有所收获,下面我们一起来看看吧。在mysql中,可以利用show语句查询外键约束,sh...

    2022-05-18 10:01:01
  • mysql查询如何设置降序
    mysql查询如何设置降序

    本篇内容介绍了“mysql查询如何设置降序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在mysql中,可以利用desc关键字对查询结果进行...

    2022-05-18 10:01:00
  • mysql如何修改主键的值
    mysql如何修改主键的值

             这篇文章主要介绍了mysql如何修改主键的值的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql如何修改主键的值文章都会有所收获,下面我们...

    2022-05-18 10:01:00
  • mysql自增id不连续怎么解决
    mysql自增id不连续怎么解决

    这篇文章主要介绍“mysql自增id不连续怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql自增id不连续怎么解决”文章能帮助大家解决问题。在mysql中,可用“AUTO_INCREM...

    2022-05-18 10:00:59
  • Redis的优势和特点有哪些
    Redis的优势和特点有哪些

    这篇文章主要介绍“Redis的优势和特点有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Redis的优势和特点有哪些”文章能帮助大家解决问题。什么是redisRemote DIctionary...

    2022-05-18 10:00:59
  • mysql中replace替换如何用
    mysql中replace替换如何用

      这篇“mysql中replace替换如何用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysql中repla...

    2022-05-17 09:39:43
  • mysql如何删除唯一索引
    mysql如何删除唯一索引

          这篇文章主要讲解了“mysql如何删除唯一索引”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql如何删除唯一索引”吧!删除方法:1、利用alt...

    2022-05-17 09:39:42
  • mysql如何查询一年的数据
    mysql如何查询一年的数据

    这篇文章主要介绍了mysql如何查询一年的数据的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql如何查询一年的数据文章都会有所收获,下面我们一起来看看吧。在mysql中,可以利用“DATE_SUB()”函...

    2022-05-17 09:39:41
  • mysql如何查询表的个数
    mysql如何查询表的个数

    这篇“mysql如何查询表的个数”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysql如何查询表的个数”文章吧。在mysq...

    2022-05-17 09:39:40
发表评论