首页 > 数据库 >PostgreSQL常用字符串分割函数整理记录

PostgreSQL常用字符串分割函数整理记录

时间:2022-11-22 13:47:38浏览次数:63  
标签:分割 PostgreSQL string split 字符串 regexp array

记录一下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');

标签:分割,PostgreSQL,string,split,字符串,regexp,array
From: https://www.cnblogs.com/hm-123/p/16914868.html

相关文章

  • 字符串中的第一个唯一字符
    字符串中的第一个唯一字符一、题目描述给定一个字符串s,找到它的第一个不重复的字符,并返回的所有。如果不存在,则返回-1。示例1输入:s="leetcode"输出:0示例2输......
  • 【华为OJ12】字符串反转
    题目描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。例如:importjava.util.Scanner;publicclassMain{publicstaticStringreverseStr(String......
  • 【华为OJ23】删除字符串中出现次数最少的字符
    题目描述实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。输入描述:字符串只包含......
  • 【字符串4】-第一个只出现一次的字符
    题目描述在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置importjava.util.Map;importjava.util.HashMap;publicc......
  • 【字符串3】-整数中1出现的次数(从1到n整数中1出现的次数)
    求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。......
  • 【C++】使用boost库的split函数分割字符串
    1#include<iostream>2#include<vector>3#include<boost/algorithm/string.hpp>45intmain(constintargc,constchar*argv[])6{7std::vect......
  • python中的字符串的常用方法介绍
    a="alxeLi金角大王"   #创建一个字符串来演示方法的功能结果。一下都使用这个字符串演示。首先要了解的常识性的知识点是:字符串是不可变的序列。所有对字符串的......
  • python中的字符串操作
    #1.索引(下标)print('1.索引')str_data='Python'#[索引(下标)]取索引的格式#正负索引#获取单个数据sub_str=str_data[4]print(sub_str)sub_str=str_d......
  • 反转字符串 II
    indexOf();查找指定字符是在字符串中的下标。在则返回所在字符串下标;不在则返回-1.Integer.parseInt();将字符串转化为int;char[]pre=s.toCharArray();intn=pre.length......
  • SHELL:echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"
    格式:echo-e"\033[字背景颜色;字体颜色m字符串\033[0m" 例如: echo-e"\033[41;36msomethinghere\033[0m" 其中41的位置代表底色,36的位置是代表字的颜色 那些......