日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

記一次mysql字符串末尾空白丟失的排查

瀏覽:28日期:2023-08-14 20:18:43
目錄問題背景環(huán)境準(zhǔn)備字符集與字符序  字符集  字符序  server的字符集與字符序  database的字符集與字符序  查看數(shù)據(jù)庫的字符集和字符序空白丟失總結(jié)參考問題背景

  一天,小伙伴找到我,他說他碰到一個很奇怪的問題

  他說:明明表名的入?yún)⑹?test ,為什么展示到界面的記錄包括 test 這條記錄?

  他補(bǔ)充道:會不會是 MyBatis-Plus 做了什么騷操作,把 test 末尾的空格給拿掉了

  我:你直接把 SQL 語句到 MySQL 執(zhí)行下試試

  結(jié)果如下:

  這看起來不夠直觀,我移動下光標(biāo)

  然后我和小伙伴面面相覷

環(huán)境準(zhǔn)備

   MySQL5 、 MySQL8 各準(zhǔn)備一個

  我們來看下默認(rèn)情況下,末尾空白的判斷情況

   MySQL 5.7.36 如下

  1 表示 TRUE ,也就是相等

   MySQL 8.0.27 如下

  0 表示 FALSE ,表示不相等

  這是什么原因,我們繼續(xù)往下看

字符集與字符序

  比較肯定就需要比較規(guī)則, SQL 的比較規(guī)則就離不開字符序,字符序又與字符集相關(guān),所以我們一個一個來捋

  字符集

  關(guān)于字符集,不是只言片語可以說清楚的,但是大家也不用擔(dān)心,網(wǎng)上相關(guān)資料已經(jīng)非常多,大家擦亮慧眼去查閱即可

  簡單點(diǎn)來說:字符集定義了字符和字符的編碼

  有人又問了:字符、字符的編碼又是什么?

  為了方便大家理解,舉個簡單栗子

    有四個字符:A、B、C、D,這四個字符的編碼分別是 A = 0, B = 1, C = 2, D = 3

    這里的字符(A、B、C、D) + 編碼(0、1、2、3)就構(gòu)成了字符集(character set)

   MySQL 支持的字符集有很多,可以通過 SHOW CHARACTER SET; 查看

   Charset :字符集名

   Description :描述

   Default collation :默認(rèn)字符序

   Maxlen :每個字符最多字節(jié)數(shù)

  字符序

  定義了字符的比較規(guī)則;字符間的比較按何種規(guī)則進(jìn)行

  一個字符集對應(yīng)多個字符序,通過 SHOW COLLATION; 可以查看全部的字符序;也可以帶條件查具體某個字符集的字符序

   Default 等于 Yes 表示是默認(rèn)字符序

  每個字符集都有默認(rèn)的字符序

  server的字符集與字符序

  當(dāng)我們創(chuàng)建數(shù)據(jù)庫時,沒有指定字符集、字符序,那么server字符集、server字符序就會作為該數(shù)據(jù)庫的字符集、字符序

  database的字符集與字符序

  指定數(shù)據(jù)庫級別的字符集、字符序

  同一個MySQL服務(wù)下的數(shù)據(jù)庫,可以分別指定不同的字符集、字符序

  創(chuàng)建、修改數(shù)據(jù)庫的時候,可以通過 CHARACTER SET 、 COLLATE 指定數(shù)據(jù)庫的字符集、字符序

  可以通過

  查看數(shù)據(jù)庫的字符集和字符序

  table的字符集與字符序

  創(chuàng)建、修改表的時候,可以通過 CHARACTER SET 、 COLLATE 指定表的字符集、字符序

  可以通過

  查看表的字符序

  column的字符集與字符序

  類型為 CHAR 、 VARCHAR 、 TEXT 的列,可以指定字符集、字符序

  可以通過

  查看字段的字符集和字符序

  多個維度指定字符集、字符序的話,粒度越細(xì)的優(yōu)先級越高( column > table > database > server )

  如果細(xì)粒度未指定字符集、字符序,那么會繼承上一級的字符集,字符序則是上一級字符集的默認(rèn)字符序

  通常情況下我們一般不會指定 table 、 column 粒度的字符集、字符序

  也就是說,通常情況下 column 的字符集會與 database 的字符集一致,而 column 的字符序則是 database 字符集的默認(rèn)字符序

空白丟失

  上面講了那么多,跟空白丟失有什么關(guān)系?

  大家先莫急,繼續(xù)往下看

   MySQL5.7 The CHAR and VARCHAR Types中有這么一段

  翻譯過來就是:

    1、類型是 CHAR 、 VARCHAR 、 TEXT 列的值,會根據(jù)列的字符序來比較和排序

    2、所有 MySQL 排序規(guī)則的類型都是 PAD SPACE 。這就意味著, CHAR 、 VARCHAR 、 TEXT 類型的值進(jìn)行比較時,不用考慮任何末尾空格,LIKE 除外

    3、不受 SQL mode 影響,也就是說不管是嚴(yán)格模式,還是非嚴(yán)格模式,都不影響 2 所說的規(guī)則

  劃重點(diǎn),記筆記:在 MySQL5.7 及以下( <=5.7 )版本中,排序規(guī)則都是 PAD SPACE ,末尾的空格會忽略不考慮

  那如何讓末尾空格參與比較了,有三種處理方式

  1、 BINARY ,類似 SELECT 'test' = BINARY 'test ';

  2、 LIKE ,類似 SELECT 'test' LIKE 'test ';

  3、 LENGTH 函數(shù),類似

   MySQL8 做了調(diào)整,The CHAR and VARCHAR Types 有如下說明

  翻譯過來就是:

    1、類型是 CHAR 、 VARCHAR 、 TEXT 列的值,會根據(jù)列的字符序來比較和排序

    2、 MySQL 字符序的 pad 參數(shù)的可選值,除了 PAD SPACE ,還增加了 NO PAD

    3、對于非二進(jìn)制字符串( CHAR 、 VARCHAR 、 TEXT ),字符序 pad 參數(shù)決定如何去處理字符串末尾的空格

       NO PAD 不會忽略末尾空格,會將其當(dāng)做其他字符一樣對待

       PAD SPACE 會忽略末尾空格, LIKE 除外

       SQL mode 不參與字符串末尾空格的處理

   MySQL8 server 維度的字符集是 utf8mb4 ,對應(yīng)的默認(rèn)字符序是: utf8mb4_0900_ai_ci

   Pad_attribute 的值是 NO PAD ,也就是不會忽略字符串末尾的空格

  所以在 MySQL8 中, SELECT 'test' = 'test '; 默認(rèn)情況下得到的結(jié)果是 0

總結(jié)

  1、非二進(jìn)制字符串( CHAR 、 VARCHAR 、 TEXT )比較時,末尾空格的處理跟列的字符序有直接關(guān)系

  2、 MySQL5.7 及之前的版本,排序規(guī)則的類型都是 PAD SPACE ,會忽略字符串末尾的空格, LIKE 除外

  3、 MySQL8 開始,字符序增加了一個參數(shù) Pad_attribute ,該參數(shù)的值不同,對字符串末尾空格的處理方式不同

     NO PAD :字符串末尾的空格會和其他字符一樣,不會被忽略

     PAD SPACE :字符串末尾的空格會被忽略, LIKE 除外

  4、如上針對的都是非二進(jìn)制字符串的排序和比較,而不是儲存

參考

  The CHAR and VARCHAR Types

  The CHAR and VARCHAR Types

  再見亂碼:5分鐘讀懂MySQL字符集設(shè)置

到此這篇關(guān)于記一次mysql字符串末尾空白丟失的排查的文章就介紹到這了,更多相關(guān)mysql字符串末尾空白丟失的排查內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MySQL 數(shù)據(jù)庫
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品 人人爱| 欧美三级第一页| 麻豆网站免费在线观看| sm捆绑调教国产免费网站在线观看| 久久大逼视频| 中文字幕av亚洲精品一部二部 | 日韩福利在线观看| 亚洲精品麻豆| 日韩国产在线观看| 欧美精品第一区| 麻豆精品久久久| 成人啊v在线| 一区二区国产精品| 国产精品片aa在线观看| av资源中文在线| 青青青免费在线视频| 欧美一区二区性| 青青国产精品| 99成人超碰| 中文字幕亚洲精品乱码| 久久av日韩| 欧美日韩国产亚洲一区| 日韩一区二区三免费高清在线观看 | 国产精品多人| 日韩伦理一区| 91免费精品国偷自产在线在线| 日韩激情av在线| 999视频精品| 国产欧美啪啪| 五月天激情综合网| 嫩呦国产一区二区三区av| 91九色精品| 国产aⅴ精品一区二区四区| 男女男精品视频网| 日本美女一区| 国产精品成人3p一区二区三区| 国产精品88久久久久久| 久久av日韩| 日韩手机在线| 午夜在线一区| 999久久久免费精品国产| 日本中文字幕一区二区视频| 在线精品视频在线观看高清| 福利在线免费视频| 麻豆视频一区二区| 日韩av一区二区三区| 国产亚洲综合精品| 激情欧美一区二区三区| 麻豆国产欧美一区二区三区| 亚洲精品美女91| 亚洲免费影院| 美女毛片一区二区三区四区| 电影91久久久| 国产一区二区三区久久| 国产精品男女| 国产午夜精品一区在线观看| 婷婷亚洲五月| 精品中文一区| 黄色欧美日韩| 丝袜美腿高跟呻吟高潮一区| 亚洲欧美视频一区二区三区| 午夜久久99| 免费视频最近日韩| 日韩中文字幕av电影| 在线视频免费在线观看一区二区| 91久久久精品国产| 午夜在线一区| 亚洲字幕久久| 欧美伊人久久| 国产精品地址| 日韩久久一区二区三区| 黄毛片在线观看| 国产伊人精品| 亚洲精品无播放器在线播放| 日韩不卡一区二区| 国产精品综合色区在线观看| 你懂的国产精品| 久久久久午夜电影| 在线精品亚洲| 欧美日韩亚洲三区| 欧美男人天堂| 亚洲经典在线| 日韩激情视频网站| 国产福利91精品一区二区| 亚洲涩涩在线| 亚洲日本久久| 91精品国产自产观看在线| 精品一区二区三区视频在线播放 | 日韩欧美精品一区| 奶水喷射视频一区| 欧美久久一区二区三区| 国产suv精品一区| 亚洲国产一区二区在线观看| 日韩一区二区三区精品视频第3页| 国产精品一区二区三区www| 香蕉久久99| 国产精品三级| 久久亚洲资源中文字| 亚洲黄页一区| 国产不卡av一区二区| 亚洲日本免费电影| 福利精品一区| 青青草伊人久久| 免费日韩av| 久久激情网站| 国内自拍视频一区二区三区| 亚洲精品少妇| 欧美精品一卡| 另类中文字幕国产精品| 国产亚洲高清在线观看| 夜夜精品视频| 香蕉久久99| 精品视频一区二区三区在线观看| 香蕉视频成人在线观看| 久久激情婷婷| 成人在线网站| 成人看片网站| 在线一区视频观看| 国产一区国产二区国产三区| 国产欧美88| 国产精品亲子伦av一区二区三区| 日韩av中文字幕一区二区| 亚洲精品乱码| 最新国产精品| 日本va欧美va欧美va精品| 日韩欧美激情| 国产精品伊人| 免费成人av在线播放| 日韩一区二区免费看| 久久亚洲电影| 在线看片日韩| 日韩国产一区二| 欧美一区91| 欧美激情亚洲| 久久精品动漫| 99精品99| 日韩av网站在线观看| 久久av导航| 成人久久一区| 久久国产精品亚洲77777| 亚洲色图国产| 久久精品一本| 四虎成人av| 亚洲精品88| 久久成人一区| 国产视频网站一区二区三区| 国产精品v亚洲精品v日韩精品| 日韩av在线中文字幕| 亚洲婷婷免费| 亚洲在线久久| 国产一区二区三区亚洲综合| 九色精品91| 日本午夜精品视频在线观看| 国产999精品在线观看| 99pao成人国产永久免费视频| 欧美三级第一页| 久久婷婷丁香| 免费人成精品欧美精品| 国产麻豆精品| 亚洲在线成人| 福利在线免费视频| 伊人精品久久| 日韩一区二区三区免费播放| 天堂va蜜桃一区二区三区| 日韩av有码| 国产精品一区高清| 视频一区中文字幕| 国产传媒av在线| 欧美日本一区| 免费看欧美美女黄的网站| 日韩成人高清| 国产一区二区三区网| 日韩高清在线一区| 三上悠亚国产精品一区二区三区| 国产亚洲高清在线观看| 91麻豆精品激情在线观看最新 | 国产精品一区二区美女视频免费看| 国产精品极品在线观看| 女人天堂亚洲aⅴ在线观看| 国产在线不卡| 国产亚洲一级| 日韩avvvv在线播放| 国产精品亚洲二区| 一本大道色婷婷在线| 久久美女性网| 红桃视频国产精品| 香蕉久久一区| 中文无码日韩欧| 国产精品伦理久久久久久| 欧美日韩1区2区3区| 亚洲美女久久| 久久亚洲色图| 中文字幕成人| 国产精品观看| 欧美特黄一级大片| 日韩欧美激情电影| 精品无人区麻豆乱码久久久 | 国产精品亚洲产品| 日韩综合在线| 国产婷婷精品|