咨询PostgreSQL中<@操作符的@作用及是否必要
关于WHERE子句中
<@操作符的说明 首先要明确:这里的<@是一个整体操作符,不是<和@分开的——@不是单独的符号,不能单独拿掉。
这个是PostgreSQL数据库特有的语法,作用是判断左侧的数组/范围类型值是否被右侧的同类型值包含。举个例子:
- 如果
alias_1.value是数组[2,3],alias_2.value是数组[1,2,3,4],这个条件会返回true - 如果是范围类型,比如
alias_1.value是[2023-01-01, 2023-01-10),alias_2.value是[2023-01-01, 2023-01-31),同样会返回true
至于要不要保留?必须保留!如果去掉@变成alias_1.value < alias_2.value,就变成了普通的“小于”比较,完全改变了原查询的逻辑,会导致结果彻底错误。
另外你提到alias_2.value是子查询的列,那这两个列的类型肯定是数组或者范围类型,这个操作符就是专门用来处理这类场景的包含判断的,是原代码逻辑的核心部分。
内容的提问来源于stack exchange,提问作者Chicken Sandwich No Pickles
相关产品推荐
相关产品推荐

