mysql单个字段查询时设置是否区分大小写

sql查询区分大小写

一般来说mysql我们建表是数据库字段设置默认是不区分大小写的,也是就是一般情况下查询是不区分大小写的。

select * from user where user_name='AA';
select * from user where user_name='aa';

上面代码所查询出来的结果是一致的

这中情况下要怎么区分大小写呢;
网上一搜就会搜到以下两种方案:
1.可以将查询条件用binary()括起来。 比如:

select * from TableA where binary columnA ='aaa';
# 或者
select * from TableA where columnA COLLATE utf8mb4_bin ='aaa';
  1. 可以修改该字段的COLLATE 校对 为 binary 比如:
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;

第一种方案是修改下sql
第二种方案需要修改数据库

sql查询不区分大小写

CREATE TABLE `T_LISTING_SITELIST` (
  `ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '数据库主键',
  `CODE` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '站点编码'
  PRIMARY KEY (`ID`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=78 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC;

如果数据库设置为区分大小写,又想查询时不区分大小写,同样有两种方法

1.对查询条件使用设定的校对规则 。 比如:
COLLATE

select * from T_LISTING_SITELIST where CODE COLLATE utf8mb4_general_ci ='aa';
  1. 可以修改该字段的COLLATE 校对 为 utf8mb4_general_ci 比如:
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8mb4_general_ci DEFAULT NULL;

collate规则

*_bin: 表示的是binary case sensitive collation,二进制字符敏感校对,区分大小写
*_cs: case sensitive collation,区分大小写
*_ci: case insensitive collation,不区分大小写

以上只是针对问题给出的一些方案,详细信息可查阅mysql的官方文档
https://dev.mysql.com/doc/refman/5.7/en/charset.html

### MySQL 查询语句实现大小写敏感搜索 在 MySQL 中,默认情况下字符匹配通常是不区分大小写的,这取决于所使用的字符集及其对应的校对规则。为了使查询变得大小写敏感,可以通过多种方式进行调整。 #### 使用 `COLLATE` 子句指定二进制校对规则 通过为字符串表达式应用特定的二进制校对规则来强制执行大小写敏感性。例如: ```sql SELECT * FROM test1 WHERE name LIKE '%B%' COLLATE utf8mb4_bin; ``` 这种方式允许临改变单个查询中的行为而不影响表结构或其他部分的数据处理逻辑[^2]。 #### 应用 `BINARY` 关键字转换操作数 另一种方法是在条件判断前加上 `BINARY` 来指示 MySQL 将后续的操作视为二进制数据流,从而启用严格模式下的比较运算: ```sql SELECT * FROM users WHERE BINARY username = 'JohnDoe'; ``` 此命令会按照精确的 ASCII 或 Unicode 编码值来进行对比测试,因此能够有效地识别不同字母的大写形式与小写形式之间的差异[^3]。 #### 修改列定义设定合适的字符集和校对规则 当创建新表格或者修改现有表格的候,也可以直接指明希望该字段采用何种字符集以及相应的校对规则。比如下面的例子展示了如何建立一个具有大小写敏感特性的 VARCHAR 类型字段: ```sql CREATE TABLE articles ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL ); ``` 这样做的好处是可以确保所有针对这个字段的操作都遵循预设好的规则而无需每次都额外声明[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值