詳解Mysql查詢條件中字串尾部有空格也能匹配上的問題
阿新 • • 發佈:2020-02-18
一、表結構
TABLE person
id | name |
---|---|
1 | 你 |
2 | 你(一個空格) |
3 | 你(二個空格) |
二、查詢與結果
select * from person where `name` = ?
無論 ? = ”你 + 幾個空格”,都會檢索出全部三個結果。
三、原因
MySQL 校對規則屬於PADSPACE,會忽略尾部空格
針對的是 varchar char text …… 等文字類的資料型別
此為 SQL 標準化行為。無需要設定也無法改變。
四、想要精確查詢怎麼辦?
方法一:like
select * from person where `name` like ?
方法二:BINARY
select * from person where `name` = BINARY ?
BINARY 不是函式,是型別轉換運算子,它用來強制它後面的字串為一個二進位制字串,可以理解成精確匹配
以上就是本次介紹的全部相關知識點,如果大家有任何補充可以聯絡我們小編。