PostgreSQL常用字符串分割函数整理记录
记录一下postgresql字符串切割处理的函数
1. SPLIT_PART
SPLIT_PART() 函数通过指定分隔符分割字符串,并返回第N个子串。语法:
SPLIT_PART(string, delimiter, position)
- string : 待分割的字符串
- delimiter:指定分割字符串
- position:返回第几个字串,从1开始,该参数必须是正数。如果参数值大于分割后字符串的数量,函数返回空串。
示例:SELECT SPLIT_PART('A,B,C', ',', 2); -- 返回B
2.STRING_TO_ARRAY
该函数用于分割字符串至数组元素,语法:
string_to_array(string, delimiter [, null string])
- string : 待分割的字符串
- delimiter:指定分割字符串
- null string : 设定空串的字符串
示例:
-
SELECT string_to_array('xx~^~yy~^~zz', '~^~'); -- {xx,yy,zz}
-
SELECT string_to_array('xx~^~yy~^~zz', '~^~', 'yy'); -- {xx,NULL,zz}
3. regexp_split_to_array|regexp_split_to_table
使用正则表达式分割字符串,用来将字符串转换成格式化数据,一个是转换成数组,一个是转换成结果集表,语法:
regexp_split_to_array ( string, pattern [, flags text ] ) → text[]
- string : 待分割的字符串
- pattern:正则表达式或指定分割字符串
示例1:正则表达式
SELECT regexp_split_to_array('foo bar baz', '\s+');
示例2:指定分割字符串
- SELECT * FROM student t WHERE regexp_split_to_array(t.subject,',') @> array['英语','中国古典文学']
- SELECT * FROM student t WHERE regexp_split_to_array(t.subject,',') @> regexp_split_to_array('英语','中国古典文学',',')
regexp_split_to_table ( string, pattern [, flags text ] )
- string : 待分割的字符串
- pattern:正则表达式或指定分割字符串
Tips:查询具体排序的第几个的用regexp_split_to_array函数,查询是否包含的条件,则使用ARRAY_AGG与 regexp_split_to_table两个函数
4.regexp_split_to_array
和上面一样,只是返回数据类型,语法:
regexp_split_to_array( string, pattern )
- string : 待分割的字符串
- pattern:正则表达式或指定分割字符串
示例1(单个切断):
select regexp_split_to_array('the,quick,brown;fox;jumps', '[,;]') -- 返回 {the,quick,brown,fox,jumps}
示例2(表字段和传入字符串比较):
select regexp_split_to_array(subjects,',') @> regexp_split_to_array('英语,中国古典文学',',')
@> 包含的关系,不指定顺序
subjects 包含 数据:'英语','中国古典文学'
= 相等的关系
subjects 等于 数据:'英语','中国古典文学'
!= 不等的关系
subjects 不等于 数据:'英语','中国古典文学'
&& 存在
subjects 包含 数据:'英语','中国古典文学' 其中的一条
5. regexp_matches
匹配一个POSIX正则表达式针对字符串并返回匹配的子字符串。语法:
REGEXP_MATCHES(string, pattern [, flags])
- string : 待分割的字符串
- pattern:要提取子字符串的字符串那匹配正则表达式
- flag:一个或多个控制函数行为的字符
- 返回结果:即使结果数组仅包含单个元素,函数也会返回一组文本
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!