最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL查詢不區(qū)分大小寫的兩種解決方式

 更新時(shí)間:2025年01月24日 10:31:01   作者:何中應(yīng)  
偶然機(jī)會,發(fā)現(xiàn)一次查詢匹配數(shù)據(jù)的時(shí)候沒有區(qū)分大小寫,如,username = ‘WangWu’,username = 'wangwu’的記錄也被查出來,本文介紹解決這種情況的兩種方式,并通過代碼講解的非常詳細(xì),需要的朋友可以參考下

場景

場景如下,一個(gè)簡單的查詢語句;

(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);
    }

數(shù)據(jù)庫數(shù)據(jù),如下:

查詢結(jié)果,沒有區(qū)分大小寫,wangwu的記錄被查出來了;

解決

解決方式有兩種,如下:

方法一:更換數(shù)據(jù)庫字符集

在前面的demo中,數(shù)據(jù)庫字符集是:utf8mb4_general_ci,表的字符集:utf8mb4_general_ci,ci,意思是case insensitive,大小寫不敏感,不區(qū)分大小寫。

可以考慮更改為 utf8mb4_bin,但是博主嘗試修改現(xiàn)有數(shù)據(jù)庫的字符集,還是不行,只有在創(chuàng)建表的時(shí)候就指定才行。故在以后創(chuàng)建數(shù)據(jù)庫選定字符集時(shí),需考慮業(yè)務(wù)是否有區(qū)分大小寫的場景。

方法二:修改SQL

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

    @Select("select * from tb_demo where username = #{username} COLLATE utf8mb4_bin")
    DemoDTO selectByUsername(String username);

指定用 utf8mb4_bin字符集比較,就能區(qū)分大小寫了,如下:

    @Test
    public void testSelectByUsername() {
        DemoDTO demoDTO1 = demoMapper.selectByUsername("WangWu");
        System.out.println("demoDTO1 = " + demoDTO1);

        DemoDTO demoDTO2 = demoMapper.selectByUsername("wangwu");
        System.out.println("demoDTO2 = " + demoDTO2);
    }

查詢結(jié)果:

總結(jié)

本文介紹了在MySQL中,解決查詢不區(qū)分大小寫的兩種方式

到此這篇關(guān)于MySQL查詢不區(qū)分大小寫的兩種解決方式的文章就介紹到這了,更多相關(guān)MySQL查詢不區(qū)分大小寫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

平度市| 白银市| 无极县| 柳江县| 琼中| 西昌市| 芮城县| 安溪县| 九龙城区| 虹口区| 东丰县| 德惠市| 阳高县| 连山| 陵川县| 龙山县| 昌图县| 南木林县| 海宁市| 诸暨市| 陇川县| 兴义市| 新兴县| 浦城县| 嘉荫县| 桃园县| 洛阳市| 安西县| 城口县| 安义县| 广安市| 瑞安市| 昂仁县| 邵武市| 海口市| 乌恰县| 北流市| 娄烦县| 潜山县| 迭部县| 花莲县|