日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務,提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

今天加班,業(yè)務的妹子過來找我們查數(shù)據(jù),說數(shù)據(jù)查出來量不對。一看妹子的SQL是這樣寫的:

select distinct * from prvt_pub_stmt_vnwhere issue_time >= '2020-08-01'and issue_time <= '2020-08-01'and prs_dmtd_cde in ('p','n');

我分析來分析去,感覺沒有問題呀,于是查了一下prs_dmtd_cde 字段的碼值,發(fā)現(xiàn)不僅有大寫的P還有小寫的p,而妹子只查了小寫的p,數(shù)據(jù)量卻多了很多。

于是我就把妹子的SQL改了一下:

select distinct * from prvt_pub_stmt_vnwhere issue_time >= '2020-08-01'and issue_time <= '2020-08-01'and prs_dmtd_cde in ('p','n','P','N');

查出來的結果竟然是一樣的。這就。。。

在妹子面前當然不能說不行啊,于是讓妹子先回去再看看。

我這邊飛快的上網(wǎng)查了查,發(fā)現(xiàn)竟然是MySQL 的編碼格式和排序規(guī)則的問題。


我們MySQL數(shù)據(jù)庫基本上用的都是 utf8 的編碼格式,而 utf8 編碼格式還存在各種排序規(guī)則。常用的如下:

utf8_bin:將字符串中的每一個字符以十六進制方式存儲數(shù)據(jù),區(qū)分大小寫。

utf8_general_ci:不區(qū)分大小寫,ci為case insensitive的縮寫,即大小寫不敏感。

再查一下默認的字符集設置:


5f61c9dd3bd62.jpg


剛好 utf8 編碼格式的默認排序規(guī)則就是:utf8_general_ci——即不區(qū)分大小寫。

解決方案

問題原因找到了,那就對癥下藥好了。

解決方法自然就是直接修改字段的 collate 屬性為 utf8_bin。

ALTER TABLE prvt_pub_stmt_vn CHANGE prs_dmtd_cde prs_dmtd_cde VARCHAR(255) 
CHARACTER SET utf8 COLLATE utf8_bin;

另外還有一種解決方法,就是不改變原有表結構,而是改SQL。在查詢字段前加上 binary 關鍵字。

select distinct * from prvt_pub_stmt_vnwhere issue_time >= '2020-08-01'and issue_time <= '2020-08-01'and binary prs_dmtd_cde in ('p','n');

Mysql 默認查詢是不分大小寫的,可以在 SQL 語句中加入 binary 來區(qū)分大小寫。

binary 不是函數(shù),是類型轉換運算符,它用來強制它后面的字符串為一個二進制字符串,可以理解為在字符串比較的時候區(qū)分大小寫。

最后

問題解決了,當然是去告訴妹子這個問題多么多么深奧,我又是如何剖析原理最終解決的了。

看著妹子投來的崇拜目光,當然是很開心了。

最最重要的還是要記住這個問題,以后在遇到字段大小寫敏感的業(yè)務,建表的時候要注意字符集和排序規(guī)則的選擇,以避免今天這種事情的發(fā)生。



分享到:
標簽:MySQL where查詢 重新認識
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定