SQL'AND'或'OR'首先出现?

 kafka 发布于 2023-01-30 17:52

我有以下查询:

SELECT * FROM MUFFIN_TYPES MT
  WHERE MT.flavor IS NULL 
    OR MT.flavor IS NOT NULL 
    AND MT.additionDate IS NOT NULL

没有澄清括号,这是令人困惑的.将MT.flavor IS NULL OR MT.flavor IS NOT NULL始终评估为真?或者它会评估为MT.flavor IS NULL (OR MT.flavor IS NOT NULL AND MT.additionDate IS NOT NULL)

我找不到有关此事的任何文件.我是后两种选择,但我不确定.

注意:我正在使用Oracle Pl/SQL.

1 个回答
  • AND的优先级高于OR:

    从Oracle 12.1 docs (AND和OR的优先级至少与版本7一致- 可能更进一步,但我没有文档链接)

    以前的版本:

    版本8

    版本7

    运算符优先级显示在以下列表中,从最高优先级到最低优先级.一行显示的运算符具有相同的优先级.

    INTERVAL
    BINARY, COLLATE
    !
    - (unary minus), ~ (unary bit inversion)
    ^
    *, /, DIV, %, MOD
    -, +
    <<, >>
    &
    |
    = (comparison), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
    BETWEEN, CASE, WHEN, THEN, ELSE
    NOT
    &&, AND
    XOR
    ||, OR
    = (assignment), :=
    

    但是,为了清楚起见,我强烈建议使用括号,并确保按照您想要的顺序对运算符进行求值.

    2023-01-30 17:54 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有