Mysql 查询区分大小写
mysql查询默认是不区分大小写的 如:
1
2
|
select * from some_table where str=‘abc ';
select * from some_table where str=' ABC';
|
得到的结果是一样的,如果我们需要进行区分的话可以按照如下方法来做:
第一种方法:
要让mysql查询区分大小写,可以:
1
2
|
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中进行区分大小写的查询。 1. **设置列的Collation** - **...
通过对SQL Server和MySQL中区分大小写的设置进行深入了解,我们可以更好地根据实际需求调整数据库的行为。无论是创建表时指定字段属性、查询时动态控制还是更改现有表的设置,这些方法都为我们提供了灵活的手段来...
在MySQL数据库中,查询操作默认情况下是不区分大小写的,这意味着如果你在查询条件中使用了不同的大小写字母,比如"aaa"和"Aaa",它们会被视为相同,从而可能导致你期望的精确匹配失败。这对于一些特定场景,比如...
MySQL默认的行为是不区分字符串中的字母大小写,这可能会在某些场景下引起困扰,比如在需要严格区分大小写的数据库操作中。以下是对这一主题的详细解释。 首先,字符集是用于表示和存储文本数据的编码方式,如UTF-8...
在MySQL中,对于Column Collate其约定的命名方法如下: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: case sensitive collation,区分大小写 *_ci: case insensitive collation,...
在MySQL数据库中,查询操作默认情况下是不区分大小写的,这意味着如果你在查询时输入的字符串与数据库中的数据在大小写上不完全匹配,查询仍然可能返回结果。这在某些场景下可能会导致意料之外的问题,比如在用户...
在MySQL数据库中,查询字符串时是否区分大小写是由字符集(character set)和校对规则(collation)共同决定的。当创建表或字段时,如果没有明确指定校对规则,MySQL通常会选择一个默认的,这可能导致在进行字符串...
例如,在进行字符串比较时,如果不使用`BINARY`,那么默认情况下会根据当前设置的字符集和排序规则来确定是否区分大小写。而在某些应用场景下,比如密码验证,我们通常希望比较时完全一致,这时就可以使用`BINARY`...
ci代表Case Insensitive(不区分大小写),bin代表Binary(二进制,区分大小写)。 2. **字符集和校对规则的级别** - MySQL允许在四个级别上设置字符集和校对规则:服务器级、数据库级、表级和连接级。 - 服务器...
1. 修改my.ini配置文件:在[mysqld]部分添加`lower_case_table_names=0`,重启MySQL服务后,表名和数据库名将区分大小写。 2. 对于字段名,MySQL本身并不支持全局的大小写敏感设置,但可以在创建表时为每个字段指定...
1. **问题背景**:在MySQL中,创建的默认索引对字符列的比较通常是不区分大小写的,这可能导致预期的唯一性约束无法正常工作。 2. **问题分析**:例如,如果你创建了一个基于`varchar`列的唯一索引,即使两个字符串...
例如,某些校对规则区分大小写,而另一些则不区分。 #### 二、校对规则的理解与应用 **校对规则**(Collation)是一组规则,用于确定如何比较和排序字符串。在MySQL中,校对规则主要应用于排序、比较操作等方面,...
- 适当选择排序规则,如`_bin`用于区分大小写,`_ci`用于不区分大小写。 了解和正确设置MySQL字符集是确保数据正确存储和检索的关键,对于处理全球化数据的应用尤其重要。通过合理配置,我们可以避免乱码问题,...
例如,`_ci`(case insensitive)表示不区分大小写,`_cs`(case sensitive)表示区分大小写。在上述例子中,`big5_chinese_ci`和`dec8_swedish_ci`都是字符集对应的字符序。 3. **字符集和字符序的层级**:MySQL...
其中,`COLLATE` 用于指定字符集的排序规则,例如 `utf8_general_ci` 表示不区分大小写。 - **删除数据库**: ```sql DROP DATABASE db_name; ``` - **选择数据库**: ```sql USE db_name; ``` - **显示...
MySQL中的比对方法通常基于字符集,如'utf8_general_ci','ci'代表'Case Insensitive',表示不区分大小写;而'utf8_bin'则区分大小写并更关注字节级别的比较。 在SQL语句中,我们可以通过创建数据库、表或者列时...