爲什麼這個查詢:MySQL的空間comparsion地獄
SELECT
"hello" = " hello",
"hello" = "hello ",
"hello" <> "hello ",
"hello" LIKE "hello ",
"hello" LIKE "hello%"
返回我的結果:
"hello" = " hello" -> 0
"hello" = "hello " -> 1
"hello" <> "hello " -> 0
"hello" LIKE "hello " -> 0
"hello" LIKE "hello%" -> 1
我特別期待"hello" = "hello "
是false
和"hello" <> "hello "
是true
(在LIKE
在這案件,行爲完全按照我的意願)。
爲什麼MySQL以這種任意和不一致的方式比較空格? (例如在"hello" = " hello"
上返回0,在"hello" = "hello "
上返回1)。
有什麼辦法可以配置MySQL工作在「嚴格模式」總是(換句話說,使其始終表現爲像varchar /文本比較LIKE
)?
不幸的是我使用的是專有框架,我不能強迫它總是在查詢中使用LIKE
來進行文本比較或修剪所有輸入。
設置'binary'排序規則解決了我的問題,謝謝! :) – Bobby