postgresql字符串处理的函数

news/2024/7/9 22:33:16 标签: 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.niftyadmin.cn/n/5099990.html

相关文章

小红书官方平台API接口根据关键词获取商品列表页、产品图片、产品销量、价格信息示例

关键词搜索商品API接口可以提供给电商平台一些有用的数据分析。例如,通过分析用户搜索的关键词,电商平台可以了解用户的购物偏好和需求,从而改进自己的商品推荐系统,并且还可以帮助广告主实现精准定位服务。广告主可以利用该接口&…

Nmap渗透测试指南之指纹识别与探测、伺机而动

Nmap渗透测试指南之指纹识别与探测、伺机而动 一. 指纹识别与探测本章知识点本章所需选项一. 服务识别及版本探测二. 版本探测三. 全端口版本探测四. 设置扫描强度五. 轻量级扫描六. 重量级扫描七. 获取详细版本信息八. RPC扫描九. 操作系统探测十. 启用操作系统探测十一. 对指…

Spring篇---第二篇

系列文章目录 文章目录 系列文章目录一、依赖注入的方式有几种,各是什么?二、讲一下什么是Spring三、说说你对Spring MVC的理解一、依赖注入的方式有几种,各是什么? 一、构造器注入 将被依赖对象通过构造函数的参数注入给依赖对象,并且在初始化对象的时候注 入。 优点: …

web前端面试-- http的各个版本的区别(HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2.0、HTTP/3.0)

本人是一个web前端开发工程师,主要是vue框架,整理了一些面试题,今后也会一直更新,有好题目的同学欢迎评论区分享 ;-) web面试题专栏:点击此处 http的各个版本的区别 HTTP(超文本传输协议&…

【Java实战】创建第一个Springboot项目Hello world

没有旗舰版的Idea授权,所以安装了社区版的idea。不知道从何时开始,社区版IDEA的插件不好用了,所以就换了个方法生成Springboot项目。 一 在线生成 选择好对应的选项后,点击生成就可以下载到一个完整的springboot项目了。 二 使用…

Java对象数组练习

定义数组存储三个商品对象,商品的属性:id,名字,价格,库存,创建三个商品对象,并把商品对象存入到数组中 public class Goods {private String id;private String name;private double price;pri…

【前端学习】—箭头函数和普通函数的区别(十四)

【前端学习】—箭头函数和普通函数的区别(十四) 一、箭头函数和普通函数的区别 const obj{fullName:zz,sayName(){console.log(this.fullName,this.fullName)//zz}}obj.sayName();const obj{fullName:zz,sayName:()>{console.log(this.fullName,this…

卷积神经网络手写字符识别 - 深度学习 计算机竞赛

文章目录 0 前言1 简介2 LeNet-5 模型的介绍2.1 结构解析2.2 C1层2.3 S2层S2层和C3层连接 2.4 F6与C5层 3 写数字识别算法模型的构建3.1 输入层设计3.2 激活函数的选取3.3 卷积层设计3.4 降采样层3.5 输出层设计 4 网络模型的总体结构5 部分实现代码6 在线手写识别7 最后 0 前言…