逻辑和位运算符

逻辑非 (!)

功能:对表达式进行逻辑非操作,即如果表达式为真(true),返回假(false);如果表达式为假(false),返回真(true)。

参数

  • expr:布尔类型表达式。

返回结果

  • 布尔类型值。

示例

SELECT !true; -- 返回 false
SELECT !false; -- 返回 true
SELECT !NULL; -- 返回 NULL

按位非 (~)

功能:对表达式进行按位非操作,即将每一位的0变成1,1变成0。

参数

  • expr:整数类型表达式。

返回结果

  • 与输入表达式相同类型的值。

示例

SELECT ~0; -- 返回 -1

不等于 (!=)

功能:比较两个表达式,如果它们不相等,返回真(true)。

参数

  • expr1:布尔类型表达式。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 布尔类型值。

示例

SELECT 1 != 0; -- 返回 true
SELECT 10 != 10; -- 返回 false
SELECT 10 != NULL; -- 返回 NULL

取模 (%)

功能:返回两个数值表达式相除的余数。

参数

  • expr1:数值类型表达式,包括 float、double、decimal、tinyint、smallint、int、bigint。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 与输入参数相同类型的值。

示例

SELECT 2 % 1.8; -- 返回 0.2
SELECT -10 % 3; -- 返回 -1

乘法 (*)

功能:返回两个数值表达式的乘积。

参数

  • expr1:数值类型表达式,包括 float、double、decimal、tinyint、smallint、int、bigint。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 与输入参数相同类型的值。

示例

SELECT 1.4 * 2.3; -- 返回 3.22

加法 (+)

功能:返回两个数值表达式的和。

参数

  • expr1:数值类型表达式,包括 float、double、decimal、tinyint、smallint、int、bigint。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 与输入参数相同类型的值。

示例

SELECT 1.4 + 2.3; -- 返回 3.7

正号 (+)

功能:返回表达式的值,不进行任何改变。

参数

  • expr:数值类型表达式。

返回结果

  • 与输入参数相同类型的值。

示例

SELECT +10; -- 返回 10
SELECT +(-10); -- 返回 -10

减法 (-)

功能:返回两个数值表达式的差。

参数

  • expr1:数值类型表达式,包括 float、double、decimal、tinyint、smallint、int、bigint。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 与输入参数相同类型的值。

示例

SELECT 3.3 - 10; -- 返回 -6.7

负号 (-)

功能:返回表达式的负值。

参数

  • expr:数值类型表达式。

返回结果

  • 与输入参数相同类型的值。

示例

SELECT -(-10); -- 返回 10
SELECT -(1.1); -- 返回 -1.1

除法 (/)

功能:返回两个数值表达式相除的商。

参数

  • expr1:数值类型表达式,包括 float、double、decimal。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 与输入参数相同类型的值。

示例

SELECT 3.3 / 1.5; -- 返回 2.2
SELECT 9L / 2L; -- 返回 4.5

整数除法 (DIV)

功能:返回两个数值表达式相除的整数部分。

参数

  • dividend:被除数,数值类型表达式。
  • divisor:除数,与被除数相同类型的表达式。

返回结果

  • 整数类型值。

示例

SELECT 10 DIV 3; -- 返回 3
SELECT 20 DIV 4; -- 返回 5
SELECT 7 DIV 2; -- 返回 3

小于 (<)

功能:比较两个表达式,如果第一个表达式小于第二个,返回真(true)。

参数

  • expr1:可比较类型的表达式。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 布尔类型值。

示例

SELECT 1 < 2; -- 返回 true
SELECT 10 < 10; -- 返回 false
SELECT 'a' < 'b'; -- 返回 true

小于等于 (<=)

功能:比较两个表达式,如果第一个表达式小于或等于第二个,返回真(true)。

参数

  • expr1:可比较类型的表达式。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 布尔类型值。

示例

SELECT 1 <= 2; -- 返回 true
SELECT 10 <= 10; -- 返回 true
SELECT 'a' <= 'b'; -- 返回 true

大于 (>)

功能:比较两个表达式,如果第一个表达式大于第二个,返回真(true)。

参数

  • expr1:可比较类型的表达式。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 布尔类型值。

示例

SELECT 2 > 1; -- 返回 true
SELECT 10 > 10; -- 返回 false
SELECT 'b' > 'a'; -- 返回 true

大于等于 (>=)

功能:比较两个表达式,如果第一个表达式大于或等于第二个,返回真(true)。

参数

  • expr1:可比较类型的表达式。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 布尔类型值。

示例

SELECT 2 >= 1; -- 返回 true
SELECT 10 >= 10; -- 返回 true
SELECT 'b' >= 'a'; -- 返回 true

等于 (=)

功能:比较两个表达式,如果它们相等,返回真(true)。

参数

  • expr1:可比较类型的表达式。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 布尔类型值。

示例

SELECT 1 = 1; -- 返回 true
SELECT 10 = 5; -- 返回 false
SELECT 10 = NULL; -- 返回 NULL

等于 (==)

功能:比较两个表达式,如果它们相等,返回真(true)。功能与 = 相同。

参数

  • expr1:可比较类型的表达式。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 布尔类型值。

示例

SELECT 1 == 1; -- 返回 true
SELECT 10 == 5; -- 返回 false
SELECT 10 == NULL; -- 返回 NULL

不等于 (<>)

功能:比较两个表达式,如果它们不相等,返回真(true)。功能与 != 相同。

参数

  • expr1:可比较类型的表达式。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 布尔类型值。

示例

SELECT 1 <> 0; -- 返回 true
SELECT 10 <> 10; -- 返回 false
SELECT 10 <> NULL; -- 返回 NULL

NULL 安全等于 (<=>)

功能:比较两个表达式,与 = 类似,但对 NULL 值有特殊处理。如果两个值都是 NULL,返回真(true);如果其中一个是 NULL,返回假(false)。等价于 SQL 标准的 IS NOT DISTINCT FROM

参数

  • expr1:可比较类型的表达式。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 布尔类型值。

示例

SELECT 1 <=> 1; -- 返回 true
SELECT NULL <=> NULL; -- 返回 true
SELECT 1 <=> NULL; -- 返回 false
SELECT NULL <=> 1; -- 返回 false

逻辑与 (AND)

功能:对两个布尔表达式进行逻辑与操作。只有当两个表达式都为真(true)时,返回真(true)。

参数

  • expr1:布尔类型表达式。
  • expr2:布尔类型表达式。

返回结果

  • 布尔类型值。

示例

SELECT true AND true; -- 返回 true
SELECT true AND false; -- 返回 false
SELECT false AND false; -- 返回 false
SELECT true AND NULL; -- 返回 NULL

逻辑或 (OR)

功能:对两个布尔表达式进行逻辑或操作。只要有一个表达式为真(true),返回真(true)。

参数

  • expr1:布尔类型表达式。
  • expr2:布尔类型表达式。

返回结果

  • 布尔类型值。

示例

SELECT true OR false; -- 返回 true
SELECT false OR false; -- 返回 false
SELECT false OR NULL; -- 返回 NULL
SELECT true OR NULL; -- 返回 true

逻辑非 (NOT)

功能:对布尔表达式进行逻辑非操作。与 ! 运算符功能相同。

参数

  • expr:布尔类型表达式。

返回结果

  • 布尔类型值。

示例

SELECT NOT true; -- 返回 false
SELECT NOT false; -- 返回 true
SELECT NOT NULL; -- 返回 NULL

按位与 (&)

功能:对两个整数表达式进行按位与操作。

参数

  • expr1:整数类型表达式。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 与输入表达式相同类型的值。

示例

SELECT 12 & 10; -- 返回 8 (二进制: 1100 & 1010 = 1000)
SELECT 7 & 3; -- 返回 3 (二进制: 0111 & 0011 = 0011)

按位或 (|)

功能:对两个整数表达式进行按位或操作。

参数

  • expr1:整数类型表达式。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 与输入表达式相同类型的值。

示例

SELECT 12 | 10; -- 返回 14 (二进制: 1100 | 1010 = 1110)
SELECT 7 | 3; -- 返回 7 (二进制: 0111 | 0011 = 0111)

按位异或 ()

功能:对两个整数表达式进行按位异或操作。

参数

  • expr1:整数类型表达式。
  • expr2:与expr1相同类型的表达式。

返回结果

  • 与输入表达式相同类型的值。

示例

SELECT 12  10; -- 返回 6 (二进制: 1100  1010 = 0110)
SELECT 7  3; -- 返回 4 (二进制: 0111  0011 = 0100)

字符串连接 (||)

功能:连接两个字符串表达式。

参数

  • expr1:字符串类型表达式。
  • expr2:字符串类型表达式。

返回结果

  • 字符串类型值。

示例

SELECT 'Hello' || ' ' || 'World'; -- 返回 'Hello World'
SELECT 'abc' || 'def'; -- 返回 'abcdef'
SELECT 'value: ' || 123; -- 返回 'value: 123'

类型转换 (::)

功能:将表达式转换为指定的数据类型。这是 PostgreSQL 风格的类型转换语法,等价于 CAST(expr AS type)。支持链式转换。

语法

expr::type
expr::type1::type2  -- 链式转换

示例

SELECT '123'::int; -- 返回 123
SELECT 3.14::int; -- 返回 3
SELECT '2024-01-01'::date; -- 返回 2024-01-01
SELECT '123'::int::string; -- 链式转换,返回 '123'

IS [NOT] DISTINCT FROM

功能:NULL 安全的等值比较。与 = 不同,当两个值都是 NULL 时返回 true(而非 NULL),当一个值是 NULL 另一个不是时返回 false(而非 NULL)。IS NOT DISTINCT FROM 等价于 <=>

语法

expr1 IS DISTINCT FROM expr2
expr1 IS NOT DISTINCT FROM expr2

返回结果

  • 布尔类型值,永远不会返回 NULL。

示例

SELECT 1 IS DISTINCT FROM 1; -- 返回 false
SELECT 1 IS DISTINCT FROM 2; -- 返回 true
SELECT NULL IS DISTINCT FROM NULL; -- 返回 false
SELECT 1 IS DISTINCT FROM NULL; -- 返回 true
SELECT 1 IS NOT DISTINCT FROM 1; -- 返回 true
SELECT NULL IS NOT DISTINCT FROM NULL; -- 返回 true

BETWEEN ... AND

功能:判断表达式的值是否在指定的范围内(包含边界值)。

语法

expr BETWEEN lower AND upper
expr NOT BETWEEN lower AND upper

返回结果

  • 布尔类型值。expr BETWEEN lower AND upper 等价于 expr >= lower AND expr <= upper

示例

SELECT 5 BETWEEN 1 AND 10; -- 返回 true
SELECT 15 NOT BETWEEN 1 AND 10; -- 返回 true
SELECT date '2024-06-15' BETWEEN date '2024-01-01' AND date '2024-12-31'; -- 返回 true

LIKE ANY / LIKE SOME / LIKE ALL

功能:将表达式与多个模式进行 LIKE 匹配。LIKE ANY(或 LIKE SOME)在任一模式匹配时返回 true;LIKE ALL 在所有模式都匹配时返回 true。

语法

expr LIKE ANY (pattern1, pattern2, ...)
expr LIKE SOME (pattern1, pattern2, ...)
expr LIKE ALL (pattern1, pattern2, ...)
expr NOT LIKE ANY (pattern1, pattern2, ...)
expr NOT LIKE ALL (pattern1, pattern2, ...)

返回结果

  • 布尔类型值。

示例

SELECT 'hello' LIKE ANY ('%llo', '%world'); -- 返回 true
SELECT 'hello' LIKE ALL ('h%', '%o'); -- 返回 true
SELECT 'hello' LIKE ALL ('h%', '%x'); -- 返回 false
SELECT 'hello' NOT LIKE ANY ('%x', '%y'); -- 返回 true

ILIKE

功能:不区分大小写的 LIKE 匹配。用法与 LIKE 完全相同,但匹配时忽略大小写。同样支持 ESCAPE 子句和 ANY/ALL 形式。

语法

expr ILIKE pattern
expr ILIKE pattern ESCAPE escape_char
expr NOT ILIKE pattern
expr ILIKE ANY (pattern1, pattern2, ...)

示例

SELECT 'Hello' ILIKE 'hello'; -- 返回 true
SELECT 'Hello' ILIKE 'HELLO%'; -- 返回 true
SELECT 'ABC' NOT ILIKE 'abc'; -- 返回 false

IS [NOT] TRUE / FALSE / UNKNOWN

功能:判断布尔表达式的值是否为 TRUE、FALSE 或 UNKNOWN(NULL)。与直接比较不同,这些谓词不会因为 NULL 而返回 NULL。

语法

expr IS TRUE
expr IS NOT TRUE
expr IS FALSE
expr IS NOT FALSE
expr IS UNKNOWN
expr IS NOT UNKNOWN

返回结果

  • 布尔类型值,永远不会返回 NULL。

示例

SELECT true IS TRUE; -- 返回 true
SELECT NULL IS TRUE; -- 返回 false
SELECT NULL IS UNKNOWN; -- 返回 true
SELECT false IS NOT FALSE; -- 返回 false
SELECT NULL IS NOT UNKNOWN; -- 返回 false

RLIKE / REGEXP

功能:使用正则表达式匹配字符串。RLIKEREGEXP 是同义词。

语法

expr RLIKE pattern
expr REGEXP pattern
expr NOT RLIKE pattern
expr NOT REGEXP pattern

返回结果

  • 布尔类型值。如果 expr 匹配正则表达式 pattern 则返回 true。

示例

SELECT 'hello123' RLIKE '[a-z]+[0-9]+'; -- 返回 true
SELECT 'hello' REGEXP 'h.*o$'; -- 返回 true
SELECT 'abc' NOT RLIKE '[0-9]+'; -- 返回 true

联系我们
预约咨询
微信咨询
电话咨询