PostgreSQL字符切割:substring函数的用法说明

作为当前最强大的开源数据库,Postgresql(以下简称pg)对字符的处理也是最为强大的,首先他也有substr,trim等其他数据库都有的普通函数,这里我们介绍他更强大的一个函数substring,可以像python,java等编程语言一样使用正则表达式,强大到极点

在此之前我们先了解一下正则表达式最基础的四个

%代表一个或多个字符 _代表一个字符 ^代表字符前 $代表字符后

pg的官网上对其用法是下面这样,但不够清楚了然,下面我一一解释

第一个

用法和substr差不多,是指定序列,from 2 for 3 是从序列为2的位置开始取3个字符。例子如上

第二个

例子用法的意思是:$代表字符后, 一个点代表一个字符,即从最末尾开始选择3个字符,同样的如果是substring('Thomas' from '^....') 则结果是Thom

第三个

用法是最实用的,也是最难理解的,先大致理解:

from '%#"o_a#"_' for '#' 中from是开始(包含),for后面跟的是逃逸,即结束

这个例子的意思是我想要o_a的组合字符,其中o_a的多个(%)字符不要,后面的一个(_)字符不要,这里要注意的是切分后面剩多少字符写几个_

这里的架构可以理解为固定的,即 from '#"#"' for '#' #" 是分割字符,可以在#"前中后限定选择你最想要的字符

下面用实例来讲解一下第三个用法

需求:下图的查询结果是查的日志表,我想要【】里的数据,由于【】里字符长度不固定,又只能用sql来切割,因此只能使用第三种方法来获取【】里的数据

解决1:

根据上面的思想,我可以写这样的架构'【#"%#"_______' FOR '#',试着运行一下

SELECT
 SUBSTRING (
 log_txt
 FROM
  '【#"%#"_______' FOR '#'
 ) log_txt
FROM
 operation_log
WHERE
 log_type = '15'
LIMIT 3

解决2:

也可以根据position这个函数来解决,这个函数类似于python的index,就是把字符串的某个字符转变为该字符所在的位置数,如此一来便可以使用substring的第一个例子用法,即

SUBSTRING ( log_txt FROM 2 FOR position('【'))

ooook 搞定了!!!

补充:Postgresql之split_part()切割函数

如下所示:

split_part(string text, delimiter text2, field int)

text要切割的字段; text2按照什么形式切割 int截取的位置

ps:

text=“name.cn” split_part(text,'.',1) 结果: name
text=“name.cn” split_part(text,'.',2) 结果: cn
text=“name.cn.com” split_part(text,'.',3) 结果: com

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • postgresql 查询集合结果用逗号分隔返回字符串处理的操作

    关键字: string_agg('' , '') 例如: select string_agg(name||'' , ',') from sys_user 补充:PostgreSQL 字段用逗号 ","隔开 判断是否含有某个值 Array Functions and Operators https://www.postgresql.org/docs/9.2/functions-array.html -- ---------------------------- -- Table stru

  • PostgreSQL向数据库表中添加行数据的操作

    实例: 例如数据库中有一个2013Rainfall数据表 想在下面接着插入一行数据,在pgAmin III 界面中,点击SQL,并其界面下输入, 如下图所示 并运行,同时刷新编辑数据界面,可看到数据插入成功, 如下图所示 补充:postgresql向表中插入大量数据 不使用存储过程: insert into schema.table select generate_series(1,10000),'a'; 以上表中有一列int类型列和一列char型列,generate_series(1,1000

  • postgresql 将逗号分隔的字符串转为多行的实例

    -- 将逗号分隔的字符串转为多行 SELECT unnest(string_to_array('4513,4564,555',',')) as a1; -- array转为行 SELECT unnest(ARRAY[1,2]); SELECT * from unnest(ARRAY[1,2],ARRAY['foo','bar','baz']); 补充:PostgreSQL 行转列.列转行字符串函数.字符串分割函数 本文主要介紹PostgreSQL 的行转列.列转行以及字符串切割函数,实际业务中对

  • Postgresql 截取字符串的案例

    截取字符串一般用 substring 就够用了.对于有些长度不定的就没法用这个函数了,但还是有规律的,可以某个字符分割. 如:(这是一个url,截取最后一部分.现在要取 - 后面部分内容) 8a59e88177ad5e70-20170317120301AB9E.plist 12b8d5c26d83a17f-20170308173008D5DD.plist 这时需要 split_part 函数,如: -- url 一共3个 - ,字符串被分成4部分,取最后一部分,那最后一个参数就是4 select

  • postgresql 实现字符串分割字段转列表查询

    在数据查询中,有一张a表存有另一张b表的id并以','隔开 如: 假设现在要关联查询关于 b表的一些信息,怎么办. 分割查询:字符串转列表函数 :regexp_split_to_table() select * from regexp_split_to_table ((select product_ids from fee_project_meal where id = 116199376233182210 ), ',') 查询后,字符串就变成了列表,然后你就可以根据这个列表去找b表的相关信息了

  • PostgreSQL字符切割:substring函数的用法说明

    作为当前最强大的开源数据库,Postgresql(以下简称pg)对字符的处理也是最为强大的,首先他也有substr,trim等其他数据库都有的普通函数,这里我们介绍他更强大的一个函数substring,可以像python,java等编程语言一样使用正则表达式,强大到极点 在此之前我们先了解一下正则表达式最基础的四个 %代表一个或多个字符 _代表一个字符 ^代表字符前 $代表字符后 pg的官网上对其用法是下面这样,但不够清楚了然,下面我一一解释 第一个 用法和substr差不多,是指定序列,fro

  • Sql Server中Substring函数的用法实例解析

    SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分.这个函数的名称在不同的资料库中不完全一样: MySQL: SUBSTR( ), SUBSTRING( ) Oracle: SUBSTR( ) SQL Server: SUBSTRING( ) SQL 中的 substring 函数是用来截取一个栏位资料中的其中一部分. 例如,我们需要将字符串'abdcsef'中的'abd'给提取出来,则可用substring 来实现: select substring('abdcsef'

  • 详解SqlServer数据库中Substring函数的用法

    功能:返回字符.二进制.文本或图像表达式的一部分 语法:SUBSTRING ( expression, start, length ) 1.substring(操作的字符串,开始截取的位置,返回的字符个数) 例如: 从'abbccc'中返回'ccc',charindex函数用法(charindex(查找的字符串,被查找的字符串,开始查找的位置),例如查找'abbccc'中第一个'c'出现的位置,charindex('c','abbccc',1)) declare @str1 varchar(25

  • php中的字符编码转换函数用法示例

    本文实例讲述了php中的字符编码转换函数的用法,分享给大家供大家参考.具体实现方法如下: 一般来说,在网页程序中,尤其是涉及到数据库的读出过程中,往往最恼火的就是字符编码的问题,php4.0.6以上的版本提供了mb_convert_encoding 可以方便的转换编码. 具体如下: 复制代码 代码如下: <?php /* Convert internal character encoding to SJIS */ $str = mb_convert_encoding($str, "SJIS

  • thinkphp中字符截取函数msubstr()用法分析

    本文实例讲述了thinkphp中字符截取函数msubstr()用法.分享给大家供大家参考,具体如下: ThinkPHP有一个内置字符截取函数msubstr()如下: msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) $str:要截取的字符串 $start=0:开始位置,默认从0开始 $length:截取长度 $charset="utf-8":字符编码,默认UTF-8 $suffix=tr

  • PostgreSql 的hash_code函数的用法说明

    PostgreSql 实现的hash_code 函数与java hash_code方法一致 CREATE FUNCTION hash_code(text) RETURNS integer LANGUAGE plpgsql AS $$ DECLARE i integer := 0; DECLARE h bigint := 0; BEGIN FOR i IN 1..length($1) LOOP h = (h * 31 + ascii(substring($1, i, 1))) & 42949672

  • JavaScript中常见的字符串操作函数及用法汇总

    本文实例总结了JavaScript中常见的字符串操作函数及用法.分享给大家供大家参考.具体分析如下: 最近几次参加前端实习生招聘的笔试,发现很多笔试题都会考到字符串的处理,比方说去哪儿网笔试题.淘宝的笔试题等.如果你经常参加笔试或者也是一个过来人,相信你也跟我一样,发现字符串的处理是前端招聘过程中最常见的题型之一.这些题有一个特点,站在考官的角度去考虑,它考的不是你会不会,而是你能不能在不借用XX手册或者XX指南再或者百度谷歌的情况下,用比较简洁的方式写出答案来.可惜的是,很多开发人员,当然我也

  • python中string模块各属性以及函数的用法介绍

    任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作. python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串操作需求: • python的字符串属性函数 • python的string模块 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.字符串属性函数  系统版本:CentOS release 6.2 (Final)2.6.32-220.

  • 谈谈PHP中substr和substring的正确用法及相关参数的介绍

    大家都知道js中字符串截取字符有函数substr和substring,那php呢,php没有直接可用的substring函数,但是有substr函数. 不信自己可以测试一下. 下面给出一段正确的代码. <? $a="me"; echo(substr($a,,));//输出me ?> 下面又给出一段错误的代码 <? $a="me"; echo(subString($a,,)); ?> substr() 函数返回字符串的一部分. substr(s

  • Oracle的substr和instr函数简单用法

    Oracle的substr函数简单用法 substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串 substr('Hello World',1,1) //返回结果为 'H'  *0和1都是表示截取的开始位置为第一个字符 substr('Hello World',2,4) //返回结果为 'ello' substr('Hello World',-3,3)//返回结果为

随机推荐