PostgreSQL数据库常用函数用法介绍

本文将介绍一些PostgreSQL中常用的函数,包括其用途、参数说明、使用示例、测试用例,以及一些复杂函数的使用。

1. length()

用途

计算字符串的长度。

参数说明
  • text:需要计算长度的字符串。
使用示例
SELECT length('PostgreSQL');

输出:

 length
--------
      10

2. substring()

用途

从字符串中提取子字符串。

参数说明
  • text:源字符串。
  • start:开始位置。
  • length:截取的长度。
使用示例
SELECT substring('PostgreSQL' FROM 1 FOR 4);

输出:

 substring
-----------
 Post

3. upper()

用途

将字符串转换为大写。

参数说明
  • text:需要转换的字符串。
使用示例
SELECT upper('PostgreSQL');

输出:

  upper
---------
 POSTGRESQL

4. lower()

用途

将字符串转换为小写。

参数说明
  • text:需要转换的字符串。
使用示例
SELECT lower('PostgreSQL');

输出:

  lower
---------
 postgresql

5. concat()

用途

连接多个字符串。

参数说明
  • text1, text2, ...:需要连接的字符串。
使用示例
SELECT concat('Post', 'greSQL');

输出:

  concat
----------
 PostgreSQL

6. coalesce()

用途

返回第一个非NULL的参数。

参数说明
  • value1, value2, ...:多个可能为NULL的值。
使用示例
SELECT coalesce(NULL, 'PostgreSQL', 'Database');

输出:

 coalesce
-----------
 PostgreSQL

7. nullif()

用途

如果两个参数相等,则返回NULL,否则返回第一个参数。

参数说明
  • value1:第一个值。
  • value2:第二个值。
使用示例
SELECT nullif('PostgreSQL', 'PostgreSQL');

输出:

 nullif
--------
 NULL

8. age()

用途

计算两个时间戳之间的差异。

参数说明
  • timestamp1:第一个时间戳。
  • timestamp2:第二个时间戳。
使用示例
SELECT age('2024-07-08', '2020-07-08');

输出:

       age
----------------
 4 years 0 mons

9. now()

用途

获取当前的时间戳。

参数说明

无参数。

使用示例
SELECT now();

输出:

              now
-------------------------------
 2024-07-08 14:30:00.123456+00

10. to_char()

用途

将日期或数字转换为指定格式的字符串。

参数说明
  • value:日期或数字。
  • format:格式字符串。
使用示例
SELECT to_char(now(), 'YYYY-MM-DD HH24:MI:SS');

输出:

      to_char
-------------------
 2024-07-08 14:30:00

11. generate_series()

用途

生成一个连续的数值或日期序列。

参数说明
  • start:开始值。
  • stop:结束值。
  • step:步长(可选)。
使用示例
SELECT generate_series(1, 5);

输出:

 generate_series
-----------------
               1
               2
               3
               4
               5

12. array_agg()

用途

将一列值聚合成一个数组。

参数说明
  • expression:要聚合的列。
使用示例
SELECT array_agg(column_name) FROM table_name;

输出:

 array_agg
------------
 {value1,value2,value3}

13. string_agg()

用途

将一列值连接成一个字符串,中间用指定的分隔符分隔。

参数说明
  • expression:要连接的列。
  • delimiter:分隔符。
使用示例
SELECT string_agg(column_name, ',') FROM table_name;

输出:

 string_agg
-------------
 value1,value2,value3

14. jsonb_agg()

用途

将一列值聚合成一个JSON数组。

参数说明
  • expression:要聚合的列。
使用示例
SELECT jsonb_agg(column_name) FROM table_name;

输出:

 jsonb_agg
------------
 [value1,value2,value3]

15. jsonb_object_agg()

用途

将一列键值对聚合成一个JSON对象。

参数说明
  • key:键列。
  • value:值列。
使用示例
SELECT jsonb_object_agg(key_column, value_column) FROM table_name;

输出:

 jsonb_object_agg
------------------
 {"key1": "value1", "key2": "value2"}

16. row_to_json()

用途

将一行记录转换为JSON对象。

参数说明
  • record:要转换的记录。
使用示例
SELECT row_to_json(row) FROM (SELECT 1 AS id, 'PostgreSQL' AS name) row;

输出:

        row_to_json
---------------------------
 {"id":1,"name":"PostgreSQL"}

17. json_build_object()

用途

构建一个JSON对象。

参数说明
  • key1:第一个键。
  • value1:第一个值。
  • key2:第二个键。
  • value2:第二个值。
使用示例
SELECT json_build_object('id', 1, 'name', 'PostgreSQL');

输出:

        json_build_object
---------------------------
 {"id":1,"name":"PostgreSQL"}

18. regexp_matches()

用途

使用正则表达式匹配字符串,返回匹配的子字符串数组。

参数说明
  • string:要匹配的字符串。
  • pattern:正则表达式模式。
使用示例
SELECT regexp_matches('PostgreSQL 13', '\d+');

输出:

 regexp_matches
----------------
 {13}

19. unnest()

用途

将数组展平为一组行。

参数说明
  • array:要展平的数组。
使用示例
SELECT unnest(ARRAY[1, 2, 3]);

输出:

 unnest
--------
      1
      2
      3

20. pg_sleep()

用途

使当前会话暂停指定的秒数。

参数说明
  • seconds:暂停的秒数。
使用示例
SELECT pg_sleep(5);

输出:

 pg_sleep
----------
 

Test Cases

以下是一些测试用例,用于验证上述函数的正确性。

-- Test for length()
SELECT length('PostgreSQL') AS length_test;

-- Test for substring()
SELECT substring('PostgreSQL' FROM 1 FOR 4) AS substring_test;

-- Test for upper()
SELECT upper('PostgreSQL') AS upper_test;

-- Test for lower()
SELECT lower('PostgreSQL') AS lower_test;

-- Test for concat()
SELECT concat('Post', 'greSQL') AS concat_test;

-- Test for coalesce()
SELECT coalesce(NULL, 'PostgreSQL', 'Database') AS coalesce_test;

-- Test for nullif()
SELECT nullif('PostgreSQL', 'PostgreSQL') AS nullif_test;

-- Test for age()
SELECT age('2024-07-08', '2020-07-08') AS age_test;

-- Test for now()
SELECT now() AS now_test;

-- Test for to_char()
SELECT to_char(now(), 'YYYY-MM-DD HH24:MI:SS') AS to_char_test;

-- Test for generate_series()
SELECT generate_series(1, 5) AS generate_series

_test;

-- Test for array_agg()
SELECT array_agg(column_name) FROM table_name;

-- Test for string_agg()
SELECT string_agg(column_name, ',') FROM table_name;

-- Test for jsonb_agg()
SELECT jsonb_agg(column_name) FROM table_name;

-- Test for jsonb_object_agg()
SELECT jsonb_object_agg(key_column, value_column) FROM table_name;

-- Test for row_to_json()
SELECT row_to_json(row) FROM (SELECT 1 AS id, 'PostgreSQL' AS name) row;

-- Test for json_build_object()
SELECT json_build_object('id', 1, 'name', 'PostgreSQL') AS json_build_object_test;

-- Test for regexp_matches()
SELECT regexp_matches('PostgreSQL 13', '\d+') AS regexp_matches_test;

-- Test for unnest()
SELECT unnest(ARRAY[1, 2, 3]) AS unnest_test;

-- Test for pg_sleep()
SELECT pg_sleep(5) AS pg_sleep_test;

总结

PostgreSQL 提供了丰富且强大的内置函数,极大地方便了数据库操作和数据处理。从字符串处理、时间操作到JSON处理和正则表达式匹配,这些函数覆盖了广泛的应用场景。通过灵活运用这些函数,开发者可以更高效地进行数据库开发和数据处理。

参考链接

  • 14
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechCraft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值