如果你在mysql有唯一约束的列上插入两行值'A'和'a',Mysql会认为它是相同的,而在oracle中就不会。就是mysql默认的字段值不区分大小写?这点是比较令人头痛的事。直接使用客户端用sql查询数据库。 发现的确是大小不敏感 。

通过查询资料发现需要设置collate(校对) 。

collate规则:

*_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的

*_cs: case sensitive collation,区分大小写

*_ci: case insensitive collation,不区分大小写

关于字符集与校验规则,mysql能:

1、使用字符集来存储字符串,支持多种字符集;

2、使用校验规则来比较字符串,同种字符集还能使用多种校验规则来比较;

3、在同一台服务器、同一个数据库或者甚至在同一个表中使用不同字符集或校对规则来混合组合字符串;

4、可以在任何级别(服务器、数据库、表、字段、字符串),定义不同的字符集和校验规则。

强制区分大小写

可以通过binary关键字,方法有两种:

第一种:让mysql查询时区分大小写

select * from usertable where binary id='AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h';

第二种:在建表时加以标识

create table `usertable`(

`id` varchar(32) binary,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `usertable` (

`id` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在mysql中,存在大小写问题的地方还有:(1) 关键字: 不区分大小写 select * fRom table_name 和 select * from table_name 效果是一样的

(2) 标示符(如数据库名称和表名称):不区分大小写。如存在表users,那么select * from users和select * from uSers 效果一样。网上说这跟操作系统有关,在所有Unit操作系统(除了使用HFS+的Mac OS 之外)上都是区分大小写的,而在windows上是不区分大小写的。(网上的这一说法没有验证过,我在windows server2003上是不区分大小写的)

(3) 表的别名:不区分大小写 select m.* from users m where M.username = 'aa';

(4) 列的别名:不区分大小写 select uName from (select username as uname from users where id = 768) ;

mysql大小写区分_详解MySQL查询时区分字符串中字母大小写的方法相关推荐

  1. mysql sql组合_详解mysql 组合查询

    使用UNION 多数SQL查询都只包含一个或多个表中返回数据的单条SELECT语句.MySQL也允许执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回.这些组合查询通常称为并(uni ...

  2. java mysql 自动提交_详解MySQL与Spring的自动提交(autocommit)

    1 MySQL的autocommit设置 MySQL默认是开启自动提交的,即每一条DML(增删改)语句都会被作为一个单独的事务进行隐式提交.如果修改为关闭状态,则执行DML语句之后要手动提交 才能生效 ...

  3. mysql 日期比较_详解Mysql中日期比较大小的方法

    假如有个表product有个字段add_time,它的数据类型为datetime,有人可能会这样写sql: 代码如下 select * from product where add_time = '2 ...

  4. mysql 数据分组_详解MySQL 数据分组

    创建分组 分组是在select语句中的group by 子句中建立的. 例: select vend_id, count(*) as num_prods from products group by ...

  5. mysql 事务 for update,mysql事务锁_详解mysql 锁表 for update

    摘要 腾兴网为您分享:详解mysql 锁表 for update,智慧农业,真还赚,悦读小说,学习帮等软件知识,以及电池管家,三国群英传3,userland,运满满货主版,王者荣耀,简单3d动画,嘉丽 ...

  6. mysql重做日志_详解MySQL 重做日志(redo log)与回滚日志(undo logo)

    前言: 前面文章讲述了 MySQL 系统中常见的几种日志,其实还有事务相关日志 redo log 和 undo log 没有介绍.相对于其他几种日志而言, redo log 和 undo log 是更 ...

  7. mysql 连接 分组_详解MySQL中的分组查询与连接查询语句

    分组查询 group by group by 属性名 [having 条件表达式][ with rollup] "属性名 "指按照该字段值进行分组:"having 条件表 ...

  8. mysql 闪电存储_详解MySQL中EXPLAIN解释命令

    explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了: 如: expla ...

  9. mysql 重建分区_详解mysql重建表分区并保留数据的相关方法

    本文介绍mysql重建表分区并保留数据的方法,mysql的表分区(partition)可以把一个表的记录分开多个区去存储,查询时可根据查询的条件在对应的分区搜寻,而不需要整表查询,提高查询效率. 有分 ...

最新文章

  1. 目前154万AI开发者
  2. 在C#代码中应用Log4Net(一)简单使用Log4Net
  3. tomcat项目快速启动设置
  4. How many levels are there at the in the digital transformation?
  5. pip 删除安装包_Python中PIP的快速指南
  6. Ubuntu 16.04 Hadoop-2.7.3全分布模式 + eclipse hadoop
  7. iOS高德地图SDK定位和搜索附近信息的具体使用
  8. Redux技术架构简介
  9. MacBook设置终端命令行的颜色高亮显示
  10. Introduction to replication 翻译
  11. Leetcode 256.粉刷房子
  12. .net 移动端 web 上传图片_vue使用cropperjs实现移动端图片裁剪上传组件
  13. Morevec算子特征提取 opencv C++ CSU
  14. Linux下命令积累
  15. 服务器系统装驱动精灵,云服务器安装驱动精灵
  16. tableau中创建一个默认为今天日期的日期字段
  17. 初中数学定理公式汇编
  18. Mac 中composer的安装
  19. P5030 长脖子鹿放置
  20. 12.28-Win7e系统定制

热门文章

  1. VRay Next for SketchUp 更新2 | 新功能预览
  2. 基于PCA的特征提取和两级匹配的激光雷达SLAM(翻译)
  3. 老季工作室一周汇报2013.6.24
  4. 杂记——17.Error:java: 读取D:\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr3Error:java: 读
  5. Python3.9安装Dlib
  6. 好玩!C语言打印彩色字符,还能闪烁!
  7. Qt编写自定义控件14-环形进度条
  8. 为什么CCD的1英寸不是25.4mm而是16mm
  9. 微信小程序扫码报工案例分享
  10. 2000字长文:探讨报销系统中的数据分析框架设计