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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值