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。