PostgreSQL 运算符详解
                           
天天向上
发布: 2025-03-11 23:30:46

原创
618 人浏览过

在 PostgreSQL 中,运算符用于执行各种操作,如数学计算、比较、逻辑判断、字符串操作等。PostgreSQL 支持多种运算符,包括算术运算符、比较运算符、逻辑运算符、位运算符、字符串运算符等。


1. 算术运算符

算术运算符用于执行基本的数学计算。

运算符描述示例结果
+加法SELECT 10 + 5;15
-减法SELECT 10 - 5;5
*乘法SELECT 10 * 5;50
/除法SELECT 10 / 5;2
%取模SELECT 10 % 3;1
^幂运算SELECT 2 ^ 3;8
|/平方根SELECT |/ 9;3
||/立方根SELECT ||/ 27;3
!阶乘SELECT 5!;120
@绝对值SELECT @ -10;10

示例:

SELECT 15 % 4;  -- 结果:3
SELECT 3 ^ 3;   -- 结果:27

2. 比较运算符

比较运算符用于比较两个值,并返回 TRUEFALSE

运算符描述示例结果
=等于SELECT 10 = 10;TRUE
<>!=不等于SELECT 10 <> 5;TRUE
<小于SELECT 10 < 5;FALSE
>大于SELECT 10 > 5;TRUE
<=小于等于SELECT 10 <= 10;TRUE
>=大于等于SELECT 10 >= 11;FALSE

示例:

SELECT * FROM employees WHERE salary > 5000;

3. 逻辑运算符

逻辑运算符用于组合多个条件。

运算符描述示例
AND逻辑与SELECT * FROM employees WHERE age > 30 AND salary > 6000;
OR逻辑或SELECT * FROM employees WHERE age < 25 OR salary > 7000;
NOT逻辑非SELECT * FROM employees WHERE NOT (department = 'IT');

示例:

SELECT * FROM employees WHERE age > 30 AND salary > 6000;

4. 位运算符

位运算符用于按位操作。

运算符描述示例结果
&按位与SELECT 5 & 3;1
|按位或SELECT 5 | 3;7
#按位异或SELECT 5 # 3;6
~按位取反SELECT ~5;-6
<<左移SELECT 5 << 1;10
>>右移SELECT 5 >> 1;2

示例:

SELECT 10 & 6;  -- 结果:2
SELECT 10 | 6;  -- 结果:14
SELECT 5 << 2;  -- 结果:20

5. 字符串运算符

字符串运算符用于处理字符串。

运算符描述示例结果
||连接字符串SELECT 'Hello' || ' World';Hello World
LIKE模式匹配SELECT * FROM employees WHERE name LIKE 'A%';匹配以 A 开头的名字
ILIKE大小写不敏感匹配SELECT * FROM employees WHERE name ILIKE 'a%';Alicealice 都能匹配
SIMILAR TO正则匹配SELECT 'abcd' SIMILAR TO 'a_%d';TRUE
~正则表达式匹配SELECT 'hello' ~ '^h.*o$';TRUE
!~反向正则匹配SELECT 'hello' !~ '^h.*a$';TRUE

示例:

SELECT 'PostgreSQL' || ' is awesome!';

6. NULL 相关运算符

运算符描述示例
IS NULL判断是否为 NULLSELECT * FROM employees WHERE salary IS NULL;
IS NOT NULL判断是否不为 NULLSELECT * FROM employees WHERE salary IS NOT NULL;
COALESCE选择第一个非 NULL 值SELECT COALESCE(NULL, 'default', 'fallback');
NULLIF如果两个值相等,则返回 NULL,否则返回第一个值SELECT NULLIF(10, 10);

示例:

SELECT COALESCE(NULL, 'Fallback Value');  -- 结果:Fallback Value

7. 数组运算符

PostgreSQL 支持数组运算符。

运算符描述示例
&&是否有重叠SELECT ARRAY[1,2,3] && ARRAY[3,4,5];
@>是否包含SELECT ARRAY[1,2,3,4] @> ARRAY[2,3];
<@是否被包含SELECT ARRAY[2,3] <@ ARRAY[1,2,3,4];

示例:

SELECT ARRAY[1, 2, 3] @> ARRAY[2];  -- 结果:TRUE

8. JSON/JSONB 运算符

PostgreSQL 提供 JSON 相关的运算符。

运算符描述示例
->提取 JSON 对象中的字段SELECT '{"name": "Alice"}'::json -> 'name';
->>提取 JSON 字段值为文本SELECT '{"name": "Alice"}'::json ->> 'name';
#>提取 JSON 路径SELECT '{"person": {"name": "Bob"}}'::json #> '{person, name}';

示例:

SELECT '{"name": "John", "age": 30}'::jsonb -> 'name';  -- 结果:"John"

总结

PostgreSQL 提供丰富的运算符,涵盖:

  • 数学运算符 (+, -, *, /, %)
  • 比较运算符 (=, <>, <, >)
  • 逻辑运算符 (AND, OR, NOT)
  • 位运算符 (&, |, #)
  • 字符串运算符 (||, LIKE, ~)
  • NULL 处理 (IS NULL, COALESCE)
  • 数组运算符 (@>, <@)
  • JSON 运算符 (->, ->>)

PostgreSQL 运算符非常强大,可以满足各种查询需求。更多详细内容请关注其他相关文章!

发表回复 0

Your email address will not be published. Required fields are marked *