平时很少会考虑数据存储需要明确字符串类型字段的大小写,MySQL默认的查询也不区分大小写。但作为用户信息,一旦用户名重复,又会浪费很多资源。再者,李逵、李鬼的多起来,侦辨起来很困难。要做到这一点,要么在建表时,明确大小写敏感(字段明确大小写敏感)。如果通盘数据库所有字段都需要大小写敏感,不如在字符集设置时做好调整。不过,通常不建议这么做。
如果跟我一样,数据库已经在线上跑了,一个表上百万条数据,做字段类型变更有可能导致数据库宕机。那么好吧,在查询时,多加个单词好了!
例如,一般查询:
SELECT * FROM U WHERE name LIKE 'a%';
SELECT * FROM U WHERE name LIKE 'A%';
其结果是一样的,为了区分'A%'和'a%',可以这么做:
SELECT * FROM U WHERE binary name LIKE 'a%';
SELECT * FROM U WHERE binary name LIKE 'A%';
仅仅多了一个
binary,就可以得到不同的结果!
当然,如果需要建表时强制区分大小写,可以这么写:
create table table_name(
name varchar (20) binary
);
就这么简单!
分享到:
相关推荐
在MySQL数据库中,查询操作默认情况下是不区分大小写的,这意味着如果你在查询条件中使用了不同的大小写字母,比如"aaa"和"Aaa",它们会被视为相同,从而可能导致你期望的精确匹配失败。这对于一些特定场景,比如...
可以在查询语句中直接使用`BINARY`关键字来强制区分大小写,如: ```sql SELECT * FROM usertable WHERE BINARY id='AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h'; ``` 2. 在创建表时设置: 创建表时,可以在字段定义中...
在MySQL数据库中,查询操作默认情况下是不区分大小写的,这意味着如果你在查询时输入的字符串与数据库中的数据在大小写上不完全匹配,查询仍然可能返回结果。这在某些场景下可能会导致意料之外的问题,比如在用户...
这样,`code`字段的比较将在查询时强制区分大小写。 3. 重建表并指定校对规则: 如果整个表都需要区分大小写,最佳做法是备份数据,然后重建表,并在建表语句中指定`_bin`校对规则,如: ```sql CREATE TABLE `...
在Linux系统中,默认情况下MySQL是区分大小写的,而在Windows系统中则通常是不区分大小写的。对于开发者来说,保持一致性是至关重要的,特别是在跨平台的应用中。本文将详细介绍如何在MySQL中配置表名忽略大小写,...
在MySQL中,数据库默认的查询行为通常是不区分大小写的,这在处理英文字符时可能会造成不便。特别是当你需要进行精确匹配,例如用户输入的用户名或密码必须与存储的值完全一致(包括大小写)时,就需要使查询区分大...
说明: MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、 表名、字段名,都不允许出现任何大写字母,避免节外生枝。 正例: aliyun _ admin , rdc _ config , level 3_
默认情况下,MySQL在查询时对表名和列名是不区分大小写的,这主要取决于你的操作系统和MySQL配置。例如,`CREATE TABLE NAME (name VARCHAR(10))`,在这之后,无论你使用`SELECT * FROM TABLE NAME WHERE name='...
2. **Linux环境**:而在Linux环境下,默认情况下MySQL严格区分大小写,这意味着在创建表或引用表时必须确保名称完全匹配(包括大小写)。 这种行为差异往往会成为从Windows环境迁移到Linux环境时的一个常见陷阱。 ...
在数据库管理中,可以改变数据库的字符集和校对规则,例如将数据库字符集更改为gb2312,使其支持简体中文且不区分大小写。此外,还可以通过相关SQL语句查询数据库的结构信息,了解其内部构成。 接下来是【表及数据...
具体来说,在Linux环境下,这些对象名称是区分大小写的;而在Windows环境中,默认情况下这些名称则不区分大小写。这种差异可能导致跨平台迁移时出现一些意外问题。例如,如果在Linux环境下创建了名为`test_table`的...
如果你需要区分大小写,可以使用BINARY关键字来强制REGEXP进行大小写敏感匹配。 另外,可以使用字符类在方括号中列出希望匹配的任意一个字符集。例如,要找出名字中包含字母'a'或'b'或'c'的所有记录,可以使用: ...
设置`lower_case_table_names = 1`使得数据库不区分大小写,`sql_mode`定义严格模式,以及其他相关参数。 6. **初始化数据库**: 在安装libaio库之后,使用`/usr/local/mysql/bin/mysqld --initialize --user=...
这些参数的顺序不是强制性的,且不区分大小写。这些参数具有特定的名称定义,例如: - `Server`: MySQL服务器的地址。 - `Database`: 要连接的数据库名称。 - `Uid`: 用户名。 - `Pwd`: 密码。 - `Port`: 连接端口...
- **大小写敏感性**:MySQL关键字和函数名称通常不区分大小写,例如`SELECT`、`select`和`SeLeCt`被视为相同。 - **计算功能**:除了执行数据库操作外,MySQL还可以用作简单的计算器,支持基本的数学运算,例如加减...
数据库和表名在区分大小写的文件系统中是区分大小写的。因此,创建和管理数据库和表时需要注意文件名的大小写一致性。 6. **特殊语法**: - **LIKE**:在数字列上也可以使用LIKE操作符。 - **INTO OUTFILE**:...
若项目无法识别表名大小写,可能是因为MySQL默认在Linux环境下区分大小写。可以通过以下方式设置为不区分大小写: - 使用root用户登录MySQL。 - 修改`/etc/my.cnf`配置文件中的`lower_case_table_names`选项为`1...