Mysql 查詢條件中字符串尾部有空格也能匹配上的問題


一、表結構

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 不是函數,是類型轉換運算符,它用來強制它后面的字符串為一個二進制字符串,可以理解成精確匹配


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM