前提條件:mysql提供了char和varchar兩種字段類型,但若查詢條件where中包含char或varchar的限制條件,那么會忽略char或varchar字段記錄中末尾的空格字符。
原因:mysql中字符串比較的時候使用的是PADSPACE校對規則,會忽略字符字段最后的空格。
解決方法如下,例如查詢table表中user(varchar類型)的字段:
(1)使用mysql的LIKE查詢關鍵字, SELECT * FROM TABLE WHERE user LIKE 'abc ';
(2)使用BINARY關鍵字, SELECT * FROM TABLE WHERE user = BINARY'abc ';
(3)使用LENGTH函數,SELECT * FROM TABLE WHERE user = ‘abc ’ AND LENGTH(user) = LENGTH('abc ');
以上三種方法均可以將末尾有空格的varchar字段的記錄查詢出。
分析:方法(1)中使用LIKE子句查詢法,如果沒有使用百分號 %進行模糊查詢, LIKE 子句與等號 = 的效果是一樣的;方法(2)中將查詢的字段強轉為二進制合適后進行查詢匹配;方法(3)中在查詢條件中增加varchar字段限制條件LENGTH長度的限制,因此對於末尾的空格可以查詢出。
