2013-01-05 65 views
2

可能重複:
How to string-compare for a single spaceMySQL的WHERE子句自動裁剪尾隨空白

爲什麼MySQL我可以查詢

SELECT name 
    FROM groups 
WHERE name = 'WEB ' 

注意的所有尾隨空白。我希望這不返回行,因爲組WEB存在,但不是WEB與尾隨空白。我如何強制MySQL精確查詢,而不是自動修剪WHERE子句中的尾部空白?

+0

「BINARY」比較是必要的。看看鏈接的問題。 –

+0

http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_trim ?? – Joddy

+0

雖然不做BINARY不使用INDEXES嗎?殺死性能。 – Justin

回答

0

您需要使用「=」符號

SELECT name FROM groups WHERE name like 'WEB ' 

LIKE操盤另一種方法是你可以使用BINARY關鍵字也。

Binary Function: - 這是MySQL提供的功能,用於逐字節比較列,並可用於執行區分大小寫的搜索。

2

解決方法是使用BINARY

SELECT name 
    FROM groups 
WHERE name = BINARY 'WEB ' 
0

一些解決方案;

如上所述,正確的做法是通過二進制比較。通常情況下,這不會像你說的那樣「殺死」性能;二進制比較通常是非常快速的操作。

SELECT name 
FROM groups 
WHERE name = BINARY 'WEB ' 

然後這會連接'WEB'到'WEB'。

除此之外,如果您使用的是前端,您可以在前端尋找解決方案;比如使用php來添加「%20」來代替空格等等。一個更優雅的解決方案是將有效的表名加載到一個數組中,並在運行查詢前比較它們的有效匹配。但是,我認爲只要運行BINARY解決方案對於處理時間會更好。