MySQL字段值如何区分大小写问题
MySQL字段值如何区分大小写
注意:设置的是字段值区分大小写
1. 查询时指定大小写敏感,加关键字‘BINARY’
(1)删表,建表,新增数据
drop table binary_test; CREATE TABLE binary_test ( `id` INT unsigned PRIMARY key NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into binary_test (name) values ('QWERTY'); insert into binary_test (name) values ('qwerty');
(2)测试数据
①查询小写字母
select * from binary_test where name ='qwerty';
②查询大写字母
select * from binary_test where binary name ='QWERTY';
2. 定义表结构时指定字段大小写敏感 关键字“BINARY
”指定guid
字段大小写敏感
drop table binary_test; CREATE TABLE binary_test ( `id` INT unsigned PRIMARY key NOT NULL AUTO_INCREMENT, `name` varchar(255) BINARY NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into binary_test (name) values ('QWERTY'); insert into binary_test (name) values ('qwerty');
注意 name字段使用binary修饰了。
select * from binary_test where name ='qwerty';
3. 修改排序规则(COLLATION)
show variables like ‘collation_database';
Collation
以 “_ci
"结尾的不区分大小写(ci——Case Ignore),以”_bin
"或者"_cs
"结尾的区分大小写
将Collation
改为 utf8_bin
(大小写敏感的)
可以为库、表、列指定Collation。
优先级为 列>表>库
CREATE DATABASE sys_userCOLLATE utf8_bin; ALTER TABLE sys_userDEFAULT CHARACTER SET=utf8 COLLATE=utf8_bin; ALTER TABLE sys_user MODIFY COLUMN username varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
ALTER TABLE sys_user MODIFY COLUMN username VARCHAR(255) BINARY
MySql查询区分大小写
在mysql中,可以利用select查询语句配合binary关键字来区分大小写,select语句用于查询数据,binary关键字用于区分大小写,语法为“select * from 表名 WHERE binary 字段=字段值”。
select count(*) from ct_brand_info where binary brand_abbr = 'NA'
在SQL语句中,BINARY关键字用于进行二进制比较。当你使用BINARY关键字时,数据库会以二进制方式比较所有的字符串,包括大小写。
在你的示例中,SELECT COUNT(*) FROM ct_brand_info WHERE BINARY brand_abbr =
'NA’的目的是计算在ct_brand_info表中,brand_abbr列中等于’NA’的记录数。
使用BINARY的关键字在这里有两方面的影响
1.大小写敏感性:BINARY使比较区分大小写。这意味着它不仅会匹配完全等于’NA’的字符串,还会匹配等于’na’或’Na’等其他大小写组合的字符串。
2.二进制比较:BINARY将字符串转换为二进制格式进行比较。这使得比较更精确,因为它考虑了每个字符的二进制表示。
总结起来,BINARY关键字在你的SQL查询中的作用是使字符串比较区分大小写并使用二进制格式进行比较。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
最新评论