当前位置: 代码网 > it编程>数据库>Mysql > MySQL查询不区分大小写的两种解决方式

MySQL查询不区分大小写的两种解决方式

2025年02月13日 Mysql 我要评论
场景场景如下,一个简单的查询语句;(mapper方法) @select("select * from tb_demo where username = #{username} ") dem

场景

场景如下,一个简单的查询语句;

(mapper方法)

    @select("select * from tb_demo where username = #{username} ")
    demodto selectbyusername(string username);

(单元测试)

    @test
    public void testselectbyusername() {
        string username = "wangwu";
        demodto demodto = demomapper.selectbyusername(username);
        system.out.println(demodto);
    }

数据库数据,如下:

查询结果,没有区分大小写,wangwu的记录被查出来了;

解决

解决方式有两种,如下:

方法一:更换数据库字符集

在前面的demo中,数据库字符集是:utf8mb4_general_ci,表的字符集:utf8mb4_general_ci,ci,意思是case insensitive,大小写不敏感,不区分大小写。

可以考虑更改为 utf8mb4_bin,但是博主尝试修改现有数据库的字符集,还是不行,只有在创建表的时候就指定才行。故在以后创建数据库选定字符集时,需考虑业务是否有区分大小写的场景。

方法二:修改sql

可以在sql中,指定字符集比较。像上面的sql,修改如下:

    @select("select * from tb_demo where username = #{username} collate utf8mb4_bin")
    demodto selectbyusername(string username);

指定用 utf8mb4_bin字符集比较,就能区分大小写了,如下:

    @test
    public void testselectbyusername() {
        demodto demodto1 = demomapper.selectbyusername("wangwu");
        system.out.println("demodto1 = " + demodto1);

        demodto demodto2 = demomapper.selectbyusername("wangwu");
        system.out.println("demodto2 = " + demodto2);
    }

查询结果:

总结

本文介绍了在mysql中,解决查询不区分大小写的两种方式

到此这篇关于mysql查询不区分大小写的两种解决方式的文章就介绍到这了,更多相关mysql查询不区分大小写内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com