You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中BETWEEN表达式的元数(Arity)到底是多少?

BETWEEN 运算符的元数争议与语法解读

问题背景

我一直觉得SQL里的BETWEEN是三元运算符(元数为3),毕竟常见写法都是这样的:

WHERE...
   1 BETWEEN 2 AND 3

但BigQuery的官方文档却把它列为二元运算符,这让我有点困惑。

验证示例

我写了段SQL来验证自己的逻辑:

select 
  ~ (SELECT -1 AS expr_1)                              AS 'bitwise_arity_1',
    (SELECT 1 AS expr_1) * (SELECT 2 AS expr_2)        AS 'times_arity_2',
    (SELECT 1 AS expr_1) BETWEEN 
      (SELECT 2 AS expr_2) AND (SELECT 3 AS expr_3)    AS 'bitwise_arity_3?'

语法解读疑问

我琢磨出一种语法解读:表达式结构是expr 'BETWEEN' logicalAndExpr,其中logicalAndExpr包含两个分组表达式,想问问这种解读对不对?

解答

从SQL语法规范和BigQuery的实现逻辑来看,你的解读完全合理:

  • 语法层面,BETWEEN确实只处理两个操作单元:左边是单个表达式,右边是由AND连接的两个表达式组成的复合逻辑块(也就是你说的logicalAndExpr)。
  • BigQuery把它归为二元运算符,本质是把b AND c当成一个整体操作数,而非拆成三个独立的操作数。
  • 虽然语义上a BETWEEN b AND c等价于a >= b AND a <= c,但语法上BETWEEN是将a和(b AND c)作为两个部分来处理,这就是它被定义为二元运算符的核心原因。

内容的提问来源于stack exchange,提问作者David542

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:50:31