Mysql 查询区分大小写

mysql查询默认是不区分大小写的 如:

select * from some_table where str=‘abc';

select * from some_table where str='ABC';

得到的结果是一样的,如果我们需要进行区分的话可以按照如下方法来做:

第一种方法:

要让mysql查询区分大小写,可以:

select * from some_table where binary str='abc'

select * from some_table where binary str='ABC'

MySQL默认的order by是不区分大小写的。 如果我们希望使用区分大小写的order by, 该怎么办呢?

先看一个例子。

表结构:

create table test_collate( `id` int NOT NULL AUTO_INCREMENT, `text` varchar(40) NOT NULL, PRIMARY KEY (`id`))ENGINE=MyISAM DEFAULT CHARSET=utf8;

插入数据:

insert into test_collate(`text`) values('aaa'),('bbb'),('AAA'),('BBB');

现在,如果我们按照text排序:

select * from test_collate order by text;

结果:

+----+------+| id | text |+----+------+| 1 | aaa || 3 | AAA || 2 | bbb || 4 | BBB |+----+------+

结果表明,大写的AAA和小写的aaa被认为是一样的, 都排在BBB和bbb前面。

为什么呢?

这里涉及到一个重要的概念,叫collate。 collate是一个与charset有关的概念, 它会影响到很多事情, 其中就包括排序的规则。

在《MySQL必知必会》中对collate有过详细的介绍, 我们就不在这里去介绍它了。

如何解决

解决方案有两个:

将test_collate表的collate改成case sensitive的

使用case sensitive的collate进行order by

这里,我们不希望改变表结构, 只是临时地order by一下, 因为使用方案2。

代码如下:

select * from test_collate order by text collate utf8_bin;

结果如下:

+----+------+| id | text |+----+------+| 3 | AAA || 4 | BBB || 1 | aaa || 2 | bbb |+----+------+

mysql排序区分大小写吗_MySQL的order by时区分大小写相关推荐

  1. mysql truncate 大表_MySQL删除大表时潜在的问题(drop table,truncate table)

    case1,删除大表时,因为清理自适应hash索引占用的内容导致的MySQL服务挂起 case2,大表的随意Drop或者truncate导致MySQL服务的挂起 按照本文中的结论就是 MySQL5.6 ...

  2. mysql排序规则错误_MySQL中“非法混合排序规则”错误的疑难解答

    阿波罗的战车 更改字符串的一个(或两者)的排序规则以使它们匹配,或者添加一个COLLATE从句到你的表情.这"校对"到底是什么?如下文所述字符集和排序规则:A 字符集是一组符号和编 ...

  3. mysql排序行号_mysql 取得行号后再排序

    一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black tre ...

  4. mysql 排序开窗函数_MySQL中实现开窗函数

    一.概述 row_number是数据库中常用的一个开窗函数,可以实现数据分区编号的功能,然而MySQL并不支持开窗函数.本文介绍了在MySQL中实现开窗函数的方法. 二.经典开窗函数 首先准备基础数据 ...

  5. mysql好玩的代码_mysql的order by与where出现的好玩事

    INSERT INTO employees (emp_no, birth_date, first_name, last_name, gender, hire_date) VALUES (10001, ...

  6. mysql排序规则查看_MySQL 查看编码 排序规则

    mysql show variables Variable_name Value collation_connection utf8_general_ci collation_database utf ...

  7. mysql写什么不同_mysql - 编译配置PHP时,两种配置写法有什么不同

    在编译PHP时, --with-扩展库=DIR --enable-扩展库 这两种配置有什么不同 回复内容: 在编译PHP时, --with-扩展库=DIR --enable-扩展库 这两种配置有什么不 ...

  8. mysql删除表崩溃_MySQL在删除表时I/O错误原因分析

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 问题现象 最近使用sysbench测试MySQL,由于测试时间较长,写了一个脚本按prepare->run->cleanup的顺 ...

  9. mysql 记录更新时间_MySQL表内更新时,自动记录时间

    1.创建表: create table test_time ( id int primary key not null, status  varchar(24), create_time dateti ...

最新文章

  1. MySQL导出到excle显示不了_mysql导出select语句结果到excel文件遇到问题及解决方法_MySQL...
  2. 面试题6--利用前序和中序遍历重构二叉树--递归方法
  3. ES6的十大特性和认知
  4. 硬件知识:SSD越用越慢的原因,看完你就懂了!
  5. vue 滑动置顶功能_VUE 实现滚动监听 导航栏置顶的方法_蜡烛_前端开发者
  6. MacOS 12.0.X系统提示“未能装载磁盘映像,错误代码为109”的临时解决方法
  7. Java数据库接口JDBC入门基础讲座_JDBC基础教程之连接
  8. 基于用户名/密码认证和流量控制 安装pam_mysql(太麻烦,已放弃;以下步骤可以参考,有报错解决...
  9. 电子文档秒变手写文字:这个工具绝了!!
  10. MATLAB快捷键大全
  11. 苹果手机支持鸿蒙,除了苹果,这四款华为也能三年不卡,还能升级鸿蒙
  12. 修改IP的cmd命令
  13. [前端]-- jquery学习1
  14. Java可变参数的基本使用
  15. 该不该从大学退学的讨论
  16. 生成二维码的三种方式
  17. ZN-61A网络型PLC可编程控制器实训装置
  18. NAMD靶向分子动力学模拟Target molecular dynamic stimulation(附conf文件)
  19. 给LINUX安装JDK
  20. LeetCode 三维形体的表面积

热门文章

  1. nginx_lua vs nginx+php 应用场景
  2. progressDialog 为什么设置了setProgress()方法无反应?
  3. DevExpress 13.2.6源码、安装包、汉化包下载和教程
  4. 【转】XP下OpenProcess( PROCESS_ALL_ACCESS...失败
  5. Python爬取唐人街探案3豆瓣短评并生成词云
  6. 基于Python3-Pygame的坦克大战小游戏
  7. Gstreamer之可变长参数实现(十)
  8. Linux读写I2C设备I2C_RDWR用法
  9. Mac安装IntelliJ IDEA配置go语言环境
  10. 调试系列2:bugreport实战篇