侧边栏壁纸
博主头像
小白不想白 博主等级

行动起来,活在当下

  • 累计撰写 16 篇文章
  • 累计创建 5 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

PostgreSql常用函数

小白不想白
2024-12-21 / 0 评论 / 0 点赞 / 5 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1、字符串在字符串中的位置

函数
POSITION(substring in string)

语法

  • substring参数是您要查找的字符串
  • 这个串参数是要搜索子字符串的字符串。
  • POSITION()函数返回一个整数,该整数表示子字符串在字符串中的位置。如果在字符串中未找到子字符串,则POSITION()函数将返回零(0)。如果子字符串或字符串参数为null,则返回null。

示例:
若依部门表查询

select dept_id,dept_name,ancestors,position(',1,' in ','||ancestors||',') from sys_dept

2、如果为空则返回指定数据

函数
COALESCE(args, data)
COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。使用COALESCE在于大部分包含空值的表达式最终将返回空值。

语法

  • args参数是要判断是否为空的字段或值
  • data如果 args为空则返回 data的值

实例:
若依用户表查询,如果部门id字段为空则返回0

select COALESCE(dept_id, 0) from sys_user

3、截取字符串

select SUBSTRING('abcd',2); -- result:bcd 表示从下标从2开始截取到末尾
select SUBSTRING('abcd',1,2); -- result:ab 表示从下标从1开始,截取2个字符

4、替换字符串

REPLACE(source, old_text, new_text );

REPLACE()函数接受三个参数:

  • source是您要替换的字符串。
  • old_text是您要搜索和替换的文本。如果 old_text在字符串中多次出现,则所有出现的位置都将被替换。
  • new_text是将替换旧文本 (old_text) 的新文本。
    实例:
    将 URL 中的子字符串 tt替换为 xx
-- 查询
SELECT REPLACE ( 'https://halo.zhangyongkang.vip', 'tt', 'xx');

-- 返回
hxxps://halo.zhangyongkang.vip

5、日期与字符串互转

  • 日期 -> 字符串
sql
-- 日期转字符串
to_char(date, formatString)

-- 例子:
select to_char(now(), 'YYYY-MM-DD HH24:MI:SS');

-- 结果:
2024-12-24 11:10:40
  • 字符串 -> 日期
sql
-- 字符串 -> 日期
to_date('dateString', 'formatString')

-- 例子:
select to_date('2024-12-24 11:10:40', 'YYYY-MM-DD HH24:MI:SS');

-- 结果
2024-12-24
  • 字符串 -> 日期时间
sql
-- 字符串 -> 日期时间
to_timestamp('2024-12-24 18:34:00', 'YYYY-MM-DD HH24:MI:SS')

-- 例子:
select to_timestamp('2024-12-24 18:34:00', 'YYYY-MM-DD HH24:MI:SS')

-- 结果:
2024-12-24 18:34:00+08

6、创建自增序列

  • 创建
sql
CREATE SEQUENCE sequence_name
    START WITH 1        --开始值
    INCREMENT BY 1      --每次新增数(步长)
    NO MINVALUE         --无最小值
    NO MAXVALUE         --无最大值
    CACHE 1;            --缓存序列数量
  • 获取下一个序列号
sql
select nextval('sequence_name')
  • 修改当前序列值
sql
ALTER SEQUENCE sequence_name RESTART WITH 10

7、四舍五入与截断

四舍五入

ROUND(number, decimal_places)

  • **number:**需要四舍五入的数字
  • decimal_places: 四舍五入后的位数
-- 例子
SELECT ROUND(123.456789, 2);  -- 结果: 123.46

SELECT ROUND(123.654321, 4);  -- 结果: 123.6543

截断

函数:TRUNC(number, scale)

  • **number:**需要截断的小数
  • **scale:**截断后的位数
-- 例子
SELECT TRUNC(10.1212, 2); -- 结果:10.12

SELECT TRUNC(10.9696, 2); -- 结果:10.969
0

评论区