2011-04-02 70 views
2


運行查詢...MySQL 5.x - 你能解釋這個奇怪嗎?

SELECT !(!0), ! !0, !!0 AS WTF; 
在MySQL

產生以下輸出...

------------------------- 
    !(!0) | ! !0 | WTF 
------------------------- 
    0 | 0 | 1  # <- What's going on here? 

我似乎無法找到的文檔任何可以解釋這一點。你可以嗎?

回答

4

這是關於運算符解析的已知bug in mysql

+0

作爲一種解決方法,您應該使用'NOT'而不是'!'。它在功能上是等價的,但它會避免該錯誤,因爲它會強制你在多個運算符之間放置空格,例如:SELECT NOT(NOT 0),NOT NOT 0,NOT NOT ASFUT;' – 2011-04-02 18:23:42

+0

Thanks Mat! @Ike Walker並不完全相同,只有在SQL模式[HIGH_NOT_PRECEDENCE](http://dev.mysql.com/doc/refman/5.1/en/server- sql-mode.html#sqlmode_high_not_precedence)已啓用! – famagusta 2011-04-02 18:29:14

+0

順便說一句,我做了「!!」 - >「不是」轉換,以找到谷歌中的錯誤報告:-) – Mat 2011-04-02 18:30:30

相關問題