美文网首页
mysql字符串区分大小写的问题

mysql字符串区分大小写的问题

作者: 燃灯道童 | 来源:发表于2021-01-25 14:12 被阅读0次

    背景:最近有个需求,需要根据品牌名(varchar)去重数据。去重后发现数据有丢失。
    问题:MySql中字符串大小写默认不区分。

    整个例子实验一下。像平常一样建一张表,插入两条数据。

    ##创建一张表,插入两条数据,一个首字母大写,一个全部是小写。
    CREATE TABLE NAME(name VARCHAR(10));
    insert into NAME VALUES('linghu');
    insert into NAME VALUES('LingHu');
    

    执行如下脚本,查询出来两条数据,确实是不区分大小写的。

    平常查询结果.png
    解决方案:
    1.查询条件前添加binary字段;
    select * from name where binary name = 'linghu';
    
    加binary后的查询结果.png

    2.设置字符集和排序方式;

    设置过程.png
    设置后再进行查询,指定小写只能查询出来小写的一条字段。
    查询结果.png

    3.创建表的时候指定binary类型,或者更改字段类型;

    ###建表时用Binary标示敏感的属性
    CREATE TABLE NAME(
    name VARCHAR(10) BINARY
    );
    
    ##或者更改原有字段属性,指定字符集和排序规则。
    ALTER TABLE NAME MODIFY COLUMN name VARCHAR(10) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
    

    4.在MySQL的配置文件my.ini中增加一行:lower_case_table_names = 0;
    其中 0:区分大小写,1:不区分大小写。(这种方法我并没有尝试。)

    相关文章

      网友评论

          本文标题:mysql字符串区分大小写的问题

          本文链接:https://www.haomeiwen.com/subject/dtmbzktx.html