【问题标题】:MySQL 5.x - Can you explain this weirdness?MySQL 5.x - 你能解释一下这个奇怪的地方吗?
【发布时间】:2011-07-28 08:27:58
【问题描述】:


运行查询...

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

在 MySQL 中产生以下输出 ...

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

我似乎在文档中找不到任何可以解释这一点的内容。可以吗?

【问题讨论】:

    标签: mysql operator-keyword negate


    【解决方案1】:

    这是关于运算符解析的已知bug in mysql

    【讨论】:

    • 作为一种解决方法,您应该使用NOT 而不是!。它在功能上是等效的,但它会避免该错误,因为它会强制您在多个运算符之间放置空格,例如:SELECT NOT (NOT 0), NOT NOT 0, NOT NOT 0 AS WTF;
    • 谢谢垫子! @Ike Walker 不完全是,NOT! 的优先级仅在启用 SQL 模式 HIGH_NOT_PRECEDENCE 时才会相同!
    • 顺便说一句,我做了“!!” -> “not not”转换以在 google 中找到该错误报告 :-)
    猜你喜欢
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    相关资源
    最近更新 更多