可能重複:
How to string-compare for a single spaceMySQL的WHERE子句自動裁剪尾隨空白
爲什麼MySQL
我可以查詢
SELECT name
FROM groups
WHERE name = 'WEB '
注意的所有尾隨空白。我希望這不返回行,因爲組WEB
存在,但不是WEB
與尾隨空白。我如何強制MySQL精確查詢,而不是自動修剪WHERE
子句中的尾部空白?
可能重複:
How to string-compare for a single spaceMySQL的WHERE子句自動裁剪尾隨空白
爲什麼MySQL
我可以查詢
SELECT name
FROM groups
WHERE name = 'WEB '
注意的所有尾隨空白。我希望這不返回行,因爲組WEB
存在,但不是WEB
與尾隨空白。我如何強制MySQL精確查詢,而不是自動修剪WHERE
子句中的尾部空白?
您需要使用「=」符號
SELECT name FROM groups WHERE name like 'WEB '
的LIKE操盤另一種方法是你可以使用BINARY關鍵字也。
Binary Function: - 這是MySQL提供的功能,用於逐字節比較列,並可用於執行區分大小寫的搜索。
解決方法是使用BINARY
。
SELECT name
FROM groups
WHERE name = BINARY 'WEB '
一些解決方案;
如上所述,正確的做法是通過二進制比較。通常情況下,這不會像你說的那樣「殺死」性能;二進制比較通常是非常快速的操作。
SELECT name
FROM groups
WHERE name = BINARY 'WEB '
然後這會連接'WEB'到'WEB'。
除此之外,如果您使用的是前端,您可以在前端尋找解決方案;比如使用php來添加「%20」來代替空格等等。一個更優雅的解決方案是將有效的表名加載到一個數組中,並在運行查詢前比較它們的有效匹配。但是,我認爲只要運行BINARY解決方案對於處理時間會更好。
「BINARY」比較是必要的。看看鏈接的問題。 –
http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_trim ?? – Joddy
雖然不做BINARY不使用INDEXES嗎?殺死性能。 – Justin