当前位置: 首页 > news >正文

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:一个或多个控制函数行为的字符
返回结果:即使结果数组仅包含单个元素,函数也会返回一组文本
示例1(提取指定符号后的内容):

SELECT REGEXP_MATCHES('Learning #Geeksforgeeks #geekPower', '#([A-Za-z0-9_]+)', 'g');

示例2(可以通过正则表达式匹配的所有模式都一样):
 

SELECT REGEXP_MATCHES('ABC', '^(A)(..)$', 'g');

 

http://www.lryc.cn/news/197106.html

相关文章:

  • (1)攻防世界web-Training-WWW-Robots
  • list.set交换数据需要(or不需要)添加其他中间变量,两个例子告诉你
  • Linux中的主要系统调用
  • 在vscode中配置git bash终端、git 源码管理
  • (三十四)大数据实战——scala运行环境安装配置及IDEA开发工具集成
  • Double 4 VR智能互动教学系统的教学应用
  • GPU 驱动下载记录
  • KILM: Knowledge Injection into Encoder-Decoder Language Models
  • 205、使用消息队列实现 RPC(远程过程调用)模型的 服务器端 和 客户端
  • C++中的函数
  • java操作时间的方式
  • 上网冲浪发现多处XSS
  • 机器学习的打分方程汇总
  • 一文了解数据管理框架以及数据战略制定方法
  • 智能管家“贾维斯”走进现实?AI Agent或成2023科技领域新风向标
  • 【广州华锐互动】VR高层小区安全疏散演练系统
  • 用Python做一个文件夹整理工具
  • Tortoise SVN 察看本地缓存密码
  • MSP430F5529晶振配置
  • [架构之路-237]:目标系统 - 纵向分层 - 网络通信 - DNS的递归查询和迭代查询
  • vue2 集成 Onlyoffice
  • 天锐绿盾透明加密、半透明加密、智能加密这三种不同加密模式的区别和适用场景——@德人合科技-公司内部核心文件数据、资料防止外泄系统
  • 六、DHCP实验
  • N沟道场效应管 FDA69N25深度图解 工作原理应用
  • Python爬虫入门教程
  • 使用正则前瞻检查密码强度
  • react+ts手写cron表达式转换组件
  • 民安智库(第三方市民健康素养调研)居民健康素养调查的重要性及实施步骤
  • Linux | vim的入门手册
  • B053 项目部署