PostgreSQL 一些比较好用的字符串函数
最近刚接触到PostgreSQL数据库,发现很多功能比较强大的内置函数,特此记录下来。示例下次再补。
1.concat
字符串连接函数
2.concat_ws
concat_ws函数连接可自定义分隔符
3.rpad | lpad
字符串填充或者缩短,如
rpad(s1,len,s2)返回字符串s1,其右边被字符串s2填补至len字符长度。假如字符串的长度大于len,则返回值被缩短到与len字符相同的长度。
4.split_part
字符串分割,根据特定字符,指定位置返回值。split_part('1,2,3,4',',',3) 返回3
5.regexp_split_to_table
根据特殊字符,将字符串分割成表
6.regexp_split_to_array
根据特殊字符,将字符串分割成数据
图来自网络
1 2 3 4 5 6 7 8 9 | select regexp_split_to_table( coalesce ( '/home/postgres/pg_basebackup.sh' , '' ),E '\/' ) ; regexp_split_to_array ------------------------------------- { "" ,home,postgres,pg_basebackup.sh} (1 row) Time : 0.315 ms |
7.ARRAY_AGG
把表达式变成一个数组 一般配合 array_to_string() 函数使用
8.STRING_AGG
string_agg(expression, delimiter) 直接把一个表达式变成字符串
9.ARRAY
array(SELECT att.name FROM ay_tree_test2 att) 即把查询出来的name字段转化成array数组
10.array_to_string
array_to_string(“数组”,”/”) 即把数组转化为字符串,并用“/”连接(使用提供的分隔符连接数组元素)
11.position
子串在一字符串中的位置,position('om' in 'Thomas') = 3
12.overlay
替换字符串中任意长度的子字串为新字符串
13.trim
去除尽可能长开始,结束或者两边的某类字符,默认为去除空白字符,当然可以自己指定,可同时指定多个要删除的字符串
例子:trim(both 'x' from 'xTomxx') = Tom
14.btrim
去除字符串两边的所有指定的字符,可同时指定多个字符
例子:btrim('xyxtrimyyx', 'xy') = trim
15.quote_literal
将一数值转换为字符串,并为其两边加上单引号,如果数值中间出现了单引号,也会被表示成两个单引号
例子:quote_literal(42.5) = '42.5'
16.regexp_replace
利用正则表达式对字符串进行替换
例子:regexp_replace('Thomas', '.[mN]a.', 'M') = ThM
17.repeat
重复字符串一指定次数
例子:repeat('Pg', 4) = PgPgPgPg
18.strpos
指定字符串在目标字符串的位置
例子:strpos('high', 'ig') = 2
19.generate_series
PostgreSQL 中有一个很有用处的内置函数generate_series,可以按不同的规则产生一系列的填充数据。
函数 | 参数类型 | 返回类型 | 描述 |
---|---|---|---|
generate_series(start, stop) | int 或 bigint | setof int 或 setof bigint(与参数类型相同) | 生成一个数值序列,从start 到 stop,步进为一 |
generate_series(start, stop, step) | int 或 bigint | setof int 或 setof bigint(与参数类型相同) | 生成一个数值序列,从start 到 stop,步进为step |
generate_series(start, stop, step_interval) | timestamp or timestamp with time zone | timestamp 或 timestamp with time zone(same as argument type) | 生成一个数值序列,从start 到 stop,步进为step |
david=# select generate_series(1, 10); generate_series ----------------- 1 2 3 4 5 6 7 8 9 10 (10 rows)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律