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

微信
手机版
网站地图

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

2021-08-25 10:30:36 投稿人 : admin 围观 : 85 次 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的缩写,即大小写敏感。

版权声明:本站部分文章内容、图片来源于网友推荐、互联网收集整理而来,仅供大家学习参考,不代表本站立场,如有侵权,请联系站长,我们会第一时间处理!本站原创内容未经允许不得转载,或转载时需注明出处:典名科技资讯门户

相关文章

  • oracle临时表空间的增删改查命令
    oracle临时表空间的增删改查命令

    oracle临时表空间的增删改查命令发布时间:2021-08-31 01:57:42来源:阿里云阅读:60作者:chen栏目:关系型数据库本篇内容介绍了“oracle临时表空间的增删改查命令”的有关知识,在实际案例的操作过程中,不少人都会遇...

    2021-08-31 11:52:19
  • Redis4.0从库复制报错"master_link_status:down"怎么处理
    Redis4.0从库复制报错"master_link_status:down"怎么处理

    “Redis4.0从库复制报错"master_link_status:down"怎么处理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis4.0从库复制报错&quo...

    2021-08-31 11:52:19
  • MySQL数据库中有哪些锁
    MySQL数据库中有哪些锁

    “MySQL数据库中有哪些锁”,在日常操作中,相信很多人在MySQL数据库中有哪些锁问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL数据库中有哪些锁”的疑惑有所帮助!接下来!在 MySQL 数据库中,...

    2021-08-31 11:24:19
  • MSSQL报错参数数据类型text对于replace函数的参数1无效怎么解决
    MSSQL报错参数数据类型text对于replace函数的参数1无效怎么解决

    “MSSQL报错参数数据类型text对于replace函数的参数1无效怎么解决”,在日常操作中,相信很多人在MSSQL报错参数数据类型text对于replace函数的参数1无效怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...

    2021-08-31 11:21:19
  • solaris11 ssh怎么禁止root用户连接
    solaris11 ssh怎么禁止root用户连接

    “solaris11 ssh怎么禁止root用户连接”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“solaris11 ssh怎么禁止root用户连接”吧!在虚拟机中新安装的solaris11,安...

    2021-08-31 11:20:19
  • 怎么用SQL语句查看SQL Server的结构信息
    怎么用SQL语句查看SQL Server的结构信息

    “怎么用SQL语句查看SQL Server的结构信息”,在日常操作中,相信很多人在怎么用SQL语句查看SQL Server的结构信息问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用SQL语句查看SQL S...

    2021-08-31 11:04:20
  • sqlplus和sqlldr工具的安装方法
    sqlplus和sqlldr工具的安装方法

    “sqlplus和sqlldr工具的安装方法”。本文介绍的方法操作简单快捷,实用性强。sqlplus和sqlldr工具的安装方法”吧!不管安装什么客户端工具都需要先安装instantclient-basic-linux.x64-11.2.0...

    2021-08-31 10:59:20
  • MHA的安装和部署步骤
    MHA的安装和部署步骤

    “MHA的安装和部署步骤”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!##################MHA安装和部署###########...

    2021-08-31 10:52:20
  • redis4.0下MEMORY命令详解
    redis4.0下MEMORY命令详解

    “redis4.0下MEMORY命令详解”,在日常操作中,相信很多人在redis4.0下MEMORY命令详解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”redis4.0下MEMORY命令详解”的疑惑有所帮助...

    2021-08-31 10:52:19
  • MySQL内存线程独享使用的方法
    MySQL内存线程独享使用的方法

    “MySQL内存线程独享使用的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL内存线程独享使用的方法”吧!  今天这篇文章暂时先分析 MySQL 中主要的 “线程独享内存” 的。...

    2021-08-25 10:37:36
发表评论