mysql字段大小写敏感问题解决

在MySQL中,查询char和varchar类型字段时默认可能存在大小写不敏感问题。为实现大小写敏感,可以在建表时指定utf8_bin字符集,如`CREATE TABLE test1...COLLATE utf8_bin`,或者在查询时使用`SELECT ... COLLATE utf8_bin`。此外,已创建的表可通过`ALTER TABLE`改变列的字符集。`ALTER COLUMN`用于快速设置默认值,`CHANGE COLUMN`用于重命名和修改列类型,而`MODIFY COLUMN`则只修改列属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql默认查询char/varchar时可能会遇到大小写不敏感的现象。

解决办法1:建表时指定大小敏感

-- 大小写敏感
CREATE TABLE `test1` (
  `str` char(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 大小写不敏感
CREATE TABLE `test2` (
  `str` char(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

如果表已经创建,ALTER TABLE MyTable CHANGE COLUMN `str` char(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL;

解决办法2:查询时指定大小写敏感

SELECT * FROM test2 WHERE str='a' collate utf8_bin;

表变更的区别:

ALTER COLUMN:设置或删除列的默认值(操作速度非常快) 例子:

alter table film alter column rental_duration set default 5;  
alter table film alter column rental_duration drop default;

CHANGE COLUMN:列的重命名、列类型的变更以及列位置的移动,必须重新命名 例子:

ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL FIRST;  
ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL AFTER baz; 

MODIFY COLUMN:除了不能给列重命名之外,他干的活和CHANGE COLUMN是一样的 例子:

ALTER TABLE MyTable MODIFY COLUMN foo VARCHAR(32) NOT NULL AFTER baz;
MySQL数据库的大小写敏感性可以根据配置进行设置。默认情况下,MySQL在Windows操作系统上是不区分大小写的,而在Unix和macOS上是区分大小写的。这是因为在Windows中,文件系统默认是大小写敏感的,而在Unix和macOS中,文件系统默认是大小写敏感的。因此,MySQL大小写敏感性与操作系统和配置有关。 如果想要将已建立的数据库和表从大小写敏感转换为不敏感,可以按照以下步骤进行: 1. 使用mysqldump命令将数据库数据导出。 2. 在my.cnf配置文件中将lower_case_table_names参数设置为1,并重启MySQL数据库。 3. 使用导出的数据将数据库数据导入到MySQL数据库中。 需要注意的是,对于大小写敏感的系统(如Windows和macOS),不能将lower_case_table_names参数设置为0。此外,在Linux默认情况下,数据库名和表名是大小写敏感的,而字段内容和列名是大小写敏感的。如果需要设置匹配字段大小写敏感,可以使用binary标记或设置校对规则(collate)来实现。 总结起来,MySQL数据库的大小写敏感性可以通过配置文件和设置校对规则来进行控制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MySQL| MySQL大小写敏感问题](https://blog.youkuaiyun.com/u011479200/article/details/89002141)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [【转】MySQL大小写敏感解决方案](https://blog.youkuaiyun.com/C_chuxin/article/details/122471582)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值