程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL中關於查詢條件中的字符串空格問題

MySQL中關於查詢條件中的字符串空格問題

編輯:MySQL綜合教程

MySQL中關於查詢條件中的字符串空格問題   假設當前mysql數據庫中有個表:sysuser 有個字段是:sysUseName 字段中有條記錄的內容是:robin 請看下面這兩個SQL語句:   www.2cto.com   SELECT * from sysuser s  where s.sysUseName = 'robin' SELECT * from sysuser s  where s.sysUseName = 'robin空格' SELECT * from sysuser s  where   s.sysUseName  =  'RoBin空格' 這三條語句均可以查詢出那條記錄。 官方文檔上說是MySQL校對規則屬於PADSPACE,對CHAR和VARCHAR值進行比較都忽略尾部空格,和服務器配置以及MySQL版本都沒關系。   MySQL 安裝目錄下有個doc目錄(Windows),裡面的 Data Types -> String Types -> The CHAR and VARCHAR Types 這一小節有對這個問題的說明以及相關的例子(版本不一樣可能章節的編號可能有變動,還是看標題吧): All MySQL collations are of type PADSPACE. This means that all CHAR and VARCHAR values in MySQL are compared without regard to any trailing spaces.     這樣帶來的問題是:我如何需要精確匹配robin這個內容?假設有一個登陸功能,我希望用戶輸入‘robin’可以登陸,但是輸入‘robin空格’卻不能登錄,該如何實現。   解決辦法如下: SELECT * from sysuser s  where   s.sysUseName  = BINARY 'robin ' BINARY不是函數,是類型轉換運算符,它用來強制它後面的字符串為一個二進制字符串,可以理解為在字符串比較的時候區分大小寫,精確匹配。 另外,因為有的MySQL特別是4.*以前的對於中文檢索會有不准確的問題,可以在檢索的時候加上binary。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved