PostgreSQL字符切割:substring函数详介_pg substring-程序员宅基地

技术标签: posgresql  sql开发进阶  PostgreSQL  substring  

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

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

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

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

  • 第一个用法和substr差不多,是指定序列,from 2 for 3 是从序列为2的位置开始取3个字符。例子如上
  • 第二个例子用法的意思是:$代表字符后, 一个点代表一个字符,即从最末尾开始选择3个字符,同样的如果是substring('Thomas' from '^....')  则结果是Thom
  • 第三个用法是最实用的,也是最难理解的,先大致理解:
    1. from '%#"o_a#"_'  for  '#'  中from是开始(包含),for后面跟的是逃逸,即结束
    2. 这个例子的意思是我想要o_a的组合字符,其中o_a的多个(%)字符不要,后面的一个(_)字符不要,这里要注意的是切分后面剩多少字符写几个_
    3. 这里的架构可以理解为固定的,即  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  搞定了!!!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mochou111/article/details/100892037

智能推荐

继续聊WPF——设置网格控件列标题的样式-程序员宅基地

文章浏览阅读141次。继续聊WPF——设置网格控件列标题的样式 原文:继续聊WPF——设置网格控件列标题的样式 我很奇怪的是,微软那厮是怎么搞的,Blend里面居然不能编辑GridView的样式,十万般无奈之下,只好手写XAML来处理了。要想知道一个控件的样式..._wpf gridviewcolumnheader

java 打印异常堆栈_Java:打印异常信息与调用堆栈到控制台-程序员宅基地

文章浏览阅读2.9k次。Java语言的异常类Exception包含着异常的全部信息。现设异常的实例名为ex,所有的异常都是一个除以0的表达式(int i = 1 / 0)所触发的:1、通过ex.getMessage()可以获取异常信息,如/ by zero2、通过ex.toString()可以获取异常类型和异常信息,如java.lang.ArithmeticException: / by zero3、通过ex.print..._java打印异常堆栈

常用手势(敲击)(拖拽)(长按)(轻扫)(捏合)(选转)_长按后拖拽的交互手势-程序员宅基地

文章浏览阅读1.3k次。/***************************************************** * * 一、使用手势时,一定要开启 !!!!!!!!!!!!!!!! * 1 .userInteractionEnabled (用户交互活着) * 2 .multipleTouchEnabled (多点触控) * * 二、几种常用的手势: * 1.UITapGes_长按后拖拽的交互手势

十套Substance视频教程_substance academy-程序员宅基地

文章浏览阅读3.1k次,点赞3次,收藏16次。1. Substance Academy - Getting Started With Substance Painter 2018出自官方Substance Academy,关于Substance Painter 2018的最新教程,通过一个制作煤油灯的实例项目,讲解了Substance Painter 2018的基础操作。12课时,时长2小时56分钟。2. Substa..._substance academy

Windows32位系统下 Vs2015 配置Opencv_vs2015编译opencv32位-程序员宅基地

文章浏览阅读3.4k次,点赞7次,收藏21次。Win8 32位系统配置Opencv参考文章:https://blog.csdn.net/yefcion/article/details/81067030本人系统环境:win8 32位opencv-3.4.0-vc14_vc15vs2015professional欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Ma..._vs2015编译opencv32位

北京计算机应用中级,计算机应用教程(中级)-程序员宅基地

文章浏览阅读110次。本书的目的是让读者了解计算机应用基础知识,掌握计算机应用基本技能,能够较为熟练地使用计算机来处理日常工作和初步处理与专业相关的问题。本书适合各级、各类学校“计算机应用基础”类课程的教学和自学使用。¥26.30定价:¥31.00(8.49折)/2010-09-01完善的知识体系:每章开始会对本章内容的考试情况进行介绍,如分值、重难点内容等;然后通过 本章知识体系一览表 将本章所有内容进行归纳汇总,使..._中级计算机北京

随便推点

Python____初识+单线程爬虫_python爬虫单线程爬取浪潮优派信息网-程序员宅基地

文章浏览阅读397次。————————————————Python语法初识————————————————#coding=utf-8#上面代码含义是改变编码 使Python文件内可以包含中文__author__ = 'Administrator'import re# #是单行注释# ''' 3引号可以保存内容的换行等格式 本来是用作字符串 如" " 和' '都是用来标注字符串的。 但_python爬虫单线程爬取浪潮优派信息网

Pandas与NumPy区别以及dataframe和ndarray对象转换_dataarray转换成numpy-程序员宅基地

文章浏览阅读6.3k次,点赞6次,收藏32次。区别Pandas 和 NumPy 被认为是科学计算与机器学习中必不可少的库,因为它们具有直观的语法和高性能的矩阵计算能力。下面对 Pandas 与 NumPy 进行简单的总结,如下表所示:比较项 Pandas NumPy 适应性 Pandas主要用来处理类表格数据。 NumPy 主要用来处理数值数据。 工具 Pandas提供了Series和DataFrame数据结构。 NumPy 构建了 ndarray array来容纳数据。 性能 Pandas_dataarray转换成numpy

leecode-110-平衡二叉树_平衡二叉树 完整实现 leecode-程序员宅基地

文章浏览阅读50次。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) {.._平衡二叉树 完整实现 leecode

springboot 手动注入bean_springboot手动注入bean-程序员宅基地

文章浏览阅读8.7k次,点赞2次,收藏4次。首先说明一下 完全可以在加载的时候注入进去 完全没必要自己手动注入,这篇文章就是自己闲没事写的spring 有一个核心的类 DefaultListableBeanFactory里边存放了我们需要的一切,我们可以从这里边获取bean对象,也可以手动注入bean对象@Componentpublic class ContextAware implements ApplicationContextAware { @Autowired DefaultListableBeanFactory bean_springboot手动注入bean

高清录播系统服务器,智慧教室高清录播服务器 高清录播系统 真正零布线 即装即用...-程序员宅基地

文章浏览阅读886次。高清录播服务器对校长的意义:使用录播系统有利于校长对学校的教学状况进行信息化教学监督,从而提高学校教学管理效能,增加学校知名度。全面提升学校的软硬件的信息化环境;精确掌握学校办学条件水平的有形资源;精确掌握教师资源的水平及分布;精确掌握教育资源的分布情况;为教育均衡化发展提供决策支持数据;为学校发展提供指导和建议;为区域内的教师提供自我成长和发展的平台;开放的优质教育资源为学生家长提供服务;为学校..._智能高清录播系统点录制显示验证证书失败

国内计算机视觉与机器学习研究团队_浙工大计算机视觉所-程序员宅基地

文章浏览阅读3.8k次。浙江工业大学---智能系统研究所---计算机视觉与图像处理研究组陈胜勇所长http://www.tdc.zjut.edu.cn/UTADB/teacher/search_one_intro.jsp?teacher_id=0343推荐几个机器学习和数据挖掘领域相关的中国大牛:http://blog.csdn.net/playoffs/article/details/7588597计算机视_浙工大计算机视觉所

推荐文章

热门文章

相关标签