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

解決MySQl查詢不區(qū)分大小寫的方法講解

 更新時間:2019年04月08日 09:10:04   作者:Veir_dev  
今天小編就為大家分享一篇關于解決MySQl查詢不區(qū)分大小寫的方法講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

問題

最近,在用SSH框架完成一個實踐項目時,碰到了一個莫名其妙的Bug困擾了我好久,最后終于解決,記錄如下。

問題:同學在測試系統(tǒng)的時候突然發(fā)現(xiàn),數(shù)據(jù)庫保存的賬戶本來應該是admin,結(jié)果該同學用Admin賬戶居然登錄成功了……

……EXM???這樣也行?好吧,我還是查找這個Bug發(fā)生的原因吧。然后就是各種排查程序的過程,找來找去也沒發(fā)現(xiàn)什么問題。終于想到,不用hql,自己寫sql語句在數(shù)據(jù)庫里面直接查詢試試,結(jié)果果然發(fā)現(xiàn)了問題所在:

select * from user where username = 'admin' and password = 'admin';
select * from user where username = 'Admin' and password = 'admin';

用上面的兩條sql語句分表查詢,出來的結(jié)果居然是一樣的!……?。∪ニ阉饕嫠阉麝P鍵詞:MySQL 查詢 大小寫,果然找到問題了!MySQL查詢是不區(qū)分大小寫的!這可真的是驚呆我了,雖然知道一般情況下,關鍵字是不區(qū)分大小寫的,但是沒想到連要查詢的參數(shù)都是不區(qū)分大小寫的??!再嘗試下面的sql語句,果然還是一樣的結(jié)果。

select * from user where username = 'ADMIN' and password = 'admin';

解決方案

網(wǎng)上搜索到一篇相關的文章,寫的挺好的,這里直接貼上該文章解釋吧:

Mysql默認的字符檢索策略:utf8_general_ci,表示不區(qū)分大小寫;utf8_general_cs表示區(qū)分大小寫,utf8_bin表示二進制比較,同樣也區(qū)分大小寫 。(注意:在Mysql5.6.10版本中,不支持utf8_genral_cs!?。。。?/p>

創(chuàng)建表時,直接設置表的collate屬性為utf8_general_cs或者utf8_bin;如果已經(jīng)創(chuàng)建表,則直接修改字段的Collation屬性為utf8_general_cs或者utf8_bin。

-- 創(chuàng)建表:
CREATE TABLE testt(
id INT PRIMARY KEY,
name VARCHAR(32) NOT NULL
) ENGINE = INNODB COLLATE =utf8_bin;
-- 修改表結(jié)構(gòu)的Collation屬性
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;

直接修改sql語句,在要查詢的字段前面加上binary關鍵字即可。

-- 在每一個條件前加上binary關鍵字
select * from user where binary username = 'admin' and binary password = 'admin';
-- 將參數(shù)以binary('')包圍
select * from user where username like binary('admin') and password like binary('admin');

注意:在我的這次項目中用的是hibernate框架,使用的并不是sql,而是hql語句,使用 from User where binary username = ? and binary password = ?;結(jié)果報錯,再試 from User where username like binary(?) and password like binary(?);才沒有報錯。原因暫時不知。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接

相關文章

  • MySQL開放遠程連接權(quán)限的兩種方法

    MySQL開放遠程連接權(quán)限的兩種方法

    在我們使用mysql數(shù)據(jù)庫時,有時我們的程序與數(shù)據(jù)庫不在同一機器上,這時我們需要遠程訪問數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關于MySQL開放遠程連接權(quán)限的兩種方法,需要的朋友可以參考下
    2022-06-06
  • SQL實現(xiàn)LeetCode(177.第N高薪水)

    SQL實現(xiàn)LeetCode(177.第N高薪水)

    這篇文章主要介紹了SQL實現(xiàn)LeetCode(177.第N高薪水),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • IOS 數(shù)據(jù)庫升級數(shù)據(jù)遷移的實例詳解

    IOS 數(shù)據(jù)庫升級數(shù)據(jù)遷移的實例詳解

    這篇文章主要介紹了IOS 數(shù)據(jù)庫升級數(shù)據(jù)遷移的實例詳解的相關資料,這里提供實例幫助大家解決數(shù)據(jù)庫升級及數(shù)據(jù)遷移的問題,需要的朋友可以參考下
    2017-07-07
  • mySQL中LEN()與DATALENGTH()的區(qū)別

    mySQL中LEN()與DATALENGTH()的區(qū)別

    LEN返回指定字符串表達式的字符數(shù),其中不包含尾隨空格。DATALENGTH返回用于表示任何表達式的字節(jié)數(shù)。
    2011-03-03
  • mysql怎么設置最大連接數(shù)詳解

    mysql怎么設置最大連接數(shù)詳解

    這篇文章主要給大家介紹了關于mysql怎么設置最大連接數(shù)的相關資料,設置mysql最大連接數(shù)的方法,首先打開mysql的控制臺,然后輸入語句set GLOBAL max_connections=1000;即可直接設置最大連接數(shù),需要的朋友可以參考下
    2022-02-02
  • 深入探究Mysql模糊查詢是否區(qū)分大小寫

    深入探究Mysql模糊查詢是否區(qū)分大小寫

    這篇文章主要給大家介紹了關于Mysql模糊查詢是否區(qū)分大小寫的相關資料,文中給出了5種解決方法以及各個方法的建議,需要的朋友可以參考下
    2021-06-06
  • MySQL使用MD5加密算法進行數(shù)據(jù)加密功能

    MySQL使用MD5加密算法進行數(shù)據(jù)加密功能

    在現(xiàn)代的數(shù)據(jù)庫應用中,數(shù)據(jù)的安全性和隱私性變得尤為重要,MySQL作為最流行的關系型數(shù)據(jù)庫之一,提供了多種加密功能,允許用戶對數(shù)據(jù)進行加密和解密操作,在這篇文章中,我們將深入探討MySQL的加密功能,并重點介紹如何使用MD5加密算法進行加密,需要的朋友可以參考下
    2024-12-12
  • mysql缺少my.ini文件的最佳解決方法

    mysql缺少my.ini文件的最佳解決方法

    my.ini是MySQL數(shù)據(jù)庫中使用的配置文件,修改這個文件可以達到更新配置的目的,下面這篇文章主要給大家介紹了關于mysql缺少my.ini文件的最佳解決方法,需要的朋友可以參考下
    2024-01-01
  • MySQL 中行轉(zhuǎn)列的方法

    MySQL 中行轉(zhuǎn)列的方法

    這篇文章主要介紹了MySQL 中行轉(zhuǎn)列的方法,幫助大家更好的理解和學習MySQL的使用,感興趣的朋友可以了解下
    2020-12-12
  • CentOS 7下安裝與配置MySQL 5.7

    CentOS 7下安裝與配置MySQL 5.7

    Mysql5.7和之前版本的MySQL有一些不同,現(xiàn)把CentOS 7下MySQL 5.7安裝、配置完整過程記下來,或許對新手來說有用。希望大家能夠喜歡
    2018-01-01

最新評論

通河县| 定安县| 资兴市| 葵青区| 诸城市| 乐清市| 全南县| 水城县| 东乡族自治县| 焉耆| 女性| 古蔺县| 沂源县| 汽车| 古交市| 睢宁县| 乐昌市| 谷城县| 孙吴县| 义乌市| 滕州市| 凉城县| 阿拉善盟| 衡水市| 拉孜县| 永平县| 吉安县| 北票市| 通江县| 广灵县| 兴宁市| 河间市| 彰化市| 南部县| 长丰县| 徐水县| 重庆市| 苏尼特左旗| 富源县| 临夏市| 辽阳县|