操作符

优先级

​ 下表按照从最高优先级到最低优先级的顺序列出了所有InCloud ZNBASE运算符,即它们在语句中的计算顺序。具有相同优先级的运算符是左关联的。这意味着这些运算符从左侧开始向右移动。

优先顺序操作符名称操作符目数
1.成员字段访问运算符双目
2::类型转换双目
3-自减单目(前缀)
~按位取反单目(前缀)
4^求幂双目
5双目
/双目
//除(结果向下取整,3/2=1)双目
%求余双目
6+双目
-双目
7<<按位左移双目
>>按位右移双目
8&按位与双目
9#按位异或双目
10|按位或双目
11||字符串拼接双目
< ANY,SOME,ALL多值比较 :“小于”双目
> ANY,SOME,ALL多值比较:“大于”双目
= ANY,SOME,ALL多值比较: “等于”双目
<= ANY,SOME,ALL多值比较: “小于或等于”双目
>= ANY,SOME,ALL多值比较: “大于或等于”双目
<> ANY / != ANY,<> SOME / != SOME,<> ALL / != ALL多值比较: “不等于”双目
[NOT] LIKE ANY,[NOT] LIKE SOME, [NOT] LIKE ALL多值比较: LIKE双目
[NOT] ILIKE ANY,[NOT] ILIKE SOME,[NOT] ILIKE ALL多值比较: ILIKE双目
12[NOT] BETWEEN值不在指定范围双目
[NOT] BETWEEN SYMMETRIC类似于[NOT] BETWEEN,但未排序。例如,而a BETWEEN b AND c指的是b <= a <= c,a BETWEEN SYMMETRIC b AND c指的是(b <= a <= c) OR (c <= a <= b)。双目
[NOT] IN值不在指定的集合中双目
[NOT] LIKE匹配[或不匹配] LIKE表达式,区分大小写双目
[NOT] ILIKE匹配[或不匹配] LIKE表达式,不区分大小写双目
[NOT] SIMILAR匹配[或不匹配] SIMILAR TO正则表达式双目
~匹配正则表达式,区分大小写双目
!~与正则表达式不匹配,区分大小写双目
~匹配正则表达式,不区分大小写双目
!~*与正则表达式不匹配,不区分大小写双目
13=等于双目
<小于双目
>大于双目
<=小于或等于双目
>=大于或等于双目
!=,<>不等于双目
14IS [DISTINCT FROM]等于,考虑NULL值双目
IS NOT [DISTINCT FROM]不等于,a IS NOT b相当于NOT(a IS b)双目
ISNULL,IS UNKNOWN , NOTNULL, IS NOT UNKNOWN等价于 IS NULL/IS NOT NULL单目(后缀)
IS NAN, IS NOT NAN与浮点NAN值的比较单目(后缀)
IS OF(…)类型谓词(是不是某种类型)单目(后缀)
15NOT逻辑非单目
16AND逻辑与双目
17OR逻辑或双目

相关支持

支持的操作如下:

操作符表达式返回值
#int # intint
varbit # varbitvarbit
#>jsonb #> string[]jsonb
#>>jsonb #>> string[]string
%decimal % decimaldecimal
decimal % intdecimal
float % floatfloat
int % decimaldecimal
int % intint
&inet & inetinet
int & intint
varbit & varbitvarbit
&&anyelement && anyelementbool
inet && inetbool
decimal  decimaldecimal
decimal  intdecimal
decimal  intervalinterval
float  floatfloat
float  intervalinterval
int  decimaldecimal
int  intint
int  intervalinterval
interval  decimalinterval
interval  floatinterval
interval  intinterval
+date + intdate
date + intervaltimestamptz
date + timetimestamp
decimal + decimaldecimal
decimal + intdecimal
float + floatfloat
inet + intinet
int + datedate
int + decimaldecimal
int + inetinet
int + intint
interval + datetimestamptz
interval + intervalinterval
interval + timetime
interval + timestamptimestamp
interval + timestamptztimestamptz
time + datetimestamp
time + intervaltime
timestamp + intervaltimestamp
timestamptz + intervaltimestamptz
--decimaldecimal
-floatfloat
-intint
-intervalinterval
date - dateint
date - intdate
date - intervaltimestamptz
date - timetimestamp
decimal - decimaldecimal
decimal - intdecimal
float - floatfloat
inet - inetint
inet - intinet
int - decimaldecimal
int - intint
interval - intervalinterval
jsonb - intjsonb
jsonb - stringjsonb
jsonb - string[]jsonb
time - intervaltime
time - timeinterval
timestamp - intervaltimestamp
timestamp - timestampinterval
timestamp - timestamptzinterval
timestamptz - intervaltimestamptz
timestamptz - timestampinterval
timestamptz - timestamptzinterval
->jsonb -> intjsonb
jsonb -> stringjsonb
->>jsonb ->> intstring
jsonb ->> stringstring
/decimal / decimaldecimal
decimal / intdecimal
float / floatfloat
int / decimaldecimal
int / intdecimal
interval / floatinterval
interval / intinterval
//decimal // decimaldecimal
decimal // intdecimal
float // floatfloat
int // decimaldecimal
int // intint
<bool < boolbool
bytes < bytesbool
collatedstring < collatedstringbool
date < datebool
date < timestampbool
date < timestamptzbool
decimal < decimalbool
decimal < floatbool
decimal < intbool
float < decimalbool
float < floatbool
float < intbool
inet < inetbool
int < decimalbool
int < floatbool
int < intbool
interval < intervalbool
oid < oidbool
string < stringbool
time < timebool
timestamp < datebool
timestamp < timestampbool
timestamp < timestamptzbool
timestamptz < datebool
timestamptz < timestampbool
timestamptz < timestamptzbool
tuple < tuplebool
uuid < uuidbool
varbit < varbitbool
<<inet << inetbool
int << intint
varbit << intvarbit
<=bool <= boolbool
bytes <= bytesbool
collatedstring <= collatedstringbool
date <= datebool
date <= timestampbool
date <= timestamptzbool
decimal <= decimalbool
decimal <= floatbool
decimal <= intbool
float <= decimalbool
float <= floatbool
float <= intbool
inet <= inetbool
int <= decimalbool
int <= floatbool
int <= intbool
interval <= intervalbool
oid <= oidbool
string <= stringbool
time <= timebool
timestamp <= datebool
timestamp <= timestampbool
timestamp <= timestamptzbool
timestamptz <= datebool
timestamptz <= timestampbool
timestamptz <= timestamptzbool
tuple <= tuplebool
uuid <= uuidbool
varbit <= varbitbool
<@anyelement <@ anyelementbool
jsonb <@ jsonbbool
=bool = boolbool
bool[] = bool[]bool
bytes = bytesbool
bytes[] = bytes[]bool
collatedstring = collatedstringbool
date = datebool
date = timestampbool
date = timestamptzbool
date[] = date[]bool
decimal = decimalbool
decimal = floatbool
decimal = intbool
decimal[] = decimal[]bool
float = decimalbool
float = floatbool
float = intbool
float[] = float[]bool
inet = inetbool
inet[] = inet[]bool
int = decimalbool
int = floatbool
int = intbool
int[] = int[]bool
interval = intervalbool
interval[] = interval[]bool
jsonb = jsonbbool
oid = oidbool
string = stringbool
string[] = string[]bool
time = timebool
time[] = time[]bool
timestamp = datebool
timestamp = timestampbool
timestamp = timestamptzbool
timestamp[] = timestamp[]bool
timestamptz = datebool
timestamptz = timestampbool
timestamptz = timestamptzbool
timestamptz = timestamptzbool
tuple = tuplebool
uuid = uuidbool
uuid[] = uuid[]bool
varbit = varbitbool
>>inet >> inetbool
int >> intint
varbit >> intvarbit
?jsonb ? stringbool
?&jsonb ?& string[]bool
?|jsonb ?| string[]bool
@>anyelement @> anyelementbool
jsonb @> jsonbbool
ILIKEstring ILIKE stringbool
INbool IN tuplebool
bytes IN tuplebool
collatedstring IN tuplebool
date IN tuplebool
decimal IN tuplebool
float IN tuplebool
inet IN tuplebool
int IN tuplebool
interval IN tuplebool
jsonb IN tuplebool
oid IN tuplebool
string IN tuplebool
time IN tuplebool
timestamp IN tuplebool
timestamptz IN tuplebool
tuple IN tuplebool
uuid IN tuplebool
varbit IN tuplebool
IS NOT DISTINCT FROMbool IS NOT DISTINCT FROM boolbool
bool[] IS NOT DISTINCT FROM bool[]bool
bytes IS NOT DISTINCT FROM bytesbool
bytes[] IS NOT DISTINCT FROM bytes[]bool
collatedstring IS NOT DISTINCT FROM collatedstringbool
date IS NOT DISTINCT FROM datebool
date IS NOT DISTINCT FROM timestampbool
date IS NOT DISTINCT FROM timestamptzbool
date[] IS NOT DISTINCT FROM date[]bool
decimal IS NOT DISTINCT FROM decimalbool
decimal IS NOT DISTINCT FROM floatbool
decimal IS NOT DISTINCT FROM intbool
decimal[] IS NOT DISTINCT FROM decimal[]bool
float IS NOT DISTINCT FROM decimalbool
float IS NOT DISTINCT FROM floatbool
float IS NOT DISTINCT FROM intbool
float[] IS NOT DISTINCT FROM float[]bool
inet IS NOT DISTINCT FROM inetbool
inet[] IS NOT DISTINCT FROM inet[]bool
int IS NOT DISTINCT FROM decimalbool
int IS NOT DISTINCT FROM floatbool
int IS NOT DISTINCT FROM intbool
int[] IS NOT DISTINCT FROM int[]bool
interval IS NOT DISTINCT FROM intervalbool
interval[] IS NOT DISTINCT FROM interval[]bool
jsonb IS NOT DISTINCT FROM jsonbbool
oid IS NOT DISTINCT FROM oidbool
string IS NOT DISTINCT FROM stringbool
string[] IS NOT DISTINCT FROM string[]bool
time IS NOT DISTINCT FROM timebool
time[] IS NOT DISTINCT FROM time[]bool
timestamp IS NOT DISTINCT FROM datebool
timestamp IS NOT DISTINCT FROM timestampbool
timestamp IS NOT DISTINCT FROM timestamptzbool
timestamp[] IS NOT DISTINCT FROM timestamp[]bool
timestamptz IS NOT DISTINCT FROM datebool
timestamptz IS NOT DISTINCT FROM timestampbool
timestamptz IS NOT DISTINCT FROM timestamptzbool
timestamptz IS NOT DISTINCT FROM timestamptzbool
tuple IS NOT DISTINCT FROM tuplebool
unknown IS NOT DISTINCT FROM unknownbool
uuid IS NOT DISTINCT FROM uuidbool
uuid[] IS NOT DISTINCT FROM uuid[]bool
varbit IS NOT DISTINCT FROM varbitbool
LIKEstring LIKE stringbool
SIMILAR TOstring SIMILAR TO stringbool
^decimal ^ decimaldecimal
decimal ^ intdecimal
float ^ floatfloat
int ^ decimaldecimal
int ^ intint
|inet | inetinet
int | intint
varbit | varbitvarbit
||bool || bool[]bool[]
bool[] || boolbool[]
bool[] || bool[]bool[]
bytes || bytesbytes
bytes || bytes[]bytes[]
bytes[] || bytesbytes[]
bytes[] || bytes[]bytes[]
date || date[]date[]
date[] || datedate[]
date[] || date[]date[]
decimal || decimal[]decimal[]
decimal[] || decimaldecimal[]
decimal[] || decimal[]decimal[]
float || float[]float[]
float[] || floatfloat[]
float[] || float[]float[]
inet || inet[]inet[]
inet[] || inetinet[]
inet[] || inet[]inet[]
int || int[]int[]
int[] || intint[]
int[] || int[]int[]
interval || interval[]interval[]
interval[] || intervalinterval[]
interval[] || interval[]interval[]
jsonb || jsonbjsonb
oid || oidoid
string || stringstring
string || string[]string[]
string[] || stringstring[]
string[] || string[]string[]
time || time[]time[]
time[] || timetime[]
time[] || time[]time[]
timestamp || timestamp[]timestamp[]
timestamp[] || timestamptimestamp[]
timestamp[] || timestamp[]timestamp[]
timestamptz || timestamptztimestamptz
timestamptz || timestamptztimestamptz
timestamptz || timestamptztimestamptz
uuid || uuid[]uuid[]
uuid[] || uuiduuid[]
uuid[] || uuid[]uuid[]
varbit || varbitvarbit
~~inetinet
~intint
~varbitvarbit
string ~ stringbool
~string ~ stringbool