PostgreSQL SQL 语法

huangapple go评论62阅读模式
英文:

PostgreSQL SQL Syntax

问题

@ 符号在这里是用来表示一个操作符的一部分,用于比较 alias_1.valuealias_2.value。它是必需的,因为它表示 "is contained by",用于检查一个值是否包含在另一个值内部。在这个上下文中,它用于比较两个列的值。

英文:

I have a where clause that looks like this (I didn't write this, it is old code from someone who is no longer here).

where alias_1.value <@ alias_2.value

What does the @ sign do? Is it really needed? Alias_2.value is NOT a parameter, but a column from a subquery.

答案1

得分: 3

以下是翻译好的部分:

这可能是一个数组运算符

任意数组 <@ 任意数组 → 布尔值

第一个数组是否包含在第二个数组中?

ARRAY[2,2,7] <@ ARRAY[1,7,4,2,6] → t

官方数组运算符和函数文档

或者可能是一个范围运算符

<@ 范围包含于

int4range(2,4) <@ int4range(1,7) → t

<@ 元素包含于

42 <@ int4range(1,7) → f

范围运算符和函数文档

或者也可以是一个 JSON 运算符

jsonb <@ jsonb → 布尔值

第一个 JSON 值是否包含在第二个中?

'{"b":2}'::jsonb <@ '{"a":1, "b":2}'::jsonb → t

JSON 函数和运算符

英文:

It could be an array operator

anyarray &lt;@ anyarray → boolean

Is the first array contained by the second?

ARRAY[2,2,7] &lt;@ ARRAY[1,7,4,2,6] → t

Official docs for array operators and functions

Or could be a range operator

<@ range is contained by

int4range(2,4) &lt;@ int4range(1,7) → t

<@ element is contained by

42 &lt;@ int4range(1,7) → f

Docs for range operators and functions

Or also could be a JSON operator

jsonb &lt;@ jsonb → boolean

Is the first JSON value contained in the second?

&#39;{&quot;b&quot;:2}&#39;::jsonb &lt;@ &#39;{&quot;a&quot;:1, &quot;b&quot;:2}&#39;::jsonb → t

JSON Functions and Operators

huangapple
  • 本文由 发表于 2023年6月8日 01:00:50
  • 转载请务必保留本文链接:https://go.coder-hub.com/76425580.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定