Postgresql字符串操作函数

news2025/6/9 19:24:26

目录

一、基础字符串操作

二、大小写转换

三、空白处理

四、子串提取

五、搜索与定位

六、字符串修改

七、填充与格式化

八、编码转换

九、正则表达式(高级匹配)

十、其他实用函数

使用技巧:


以下是 PostgreSQL 中最全面的常用字符串函数列表,包含详细说明和示例:

一、基础字符串操作

  1. || (连接运算符)

    SELECT 'Hello' || ' ' || 'World';  -- 'Hello World'
    
  2. CONCAT(str1, str2, ...)
    支持 NULL 值(NULL 视为空字符串)

    SELECT CONCAT('A', NULL, 'B');  -- 'AB'
    
  3. CONCAT_WS(sep, str1, str2, ...)
    带分隔符的连接(跳过 NULL)

    SELECT CONCAT_WS('-', '2023', '10', NULL, '27');  -- '2023-10-27'
    

二、大小写转换

  1. LOWER(str)

    SELECT LOWER('PostgreSQL');  -- 'postgresql'
    
  2. UPPER(str)

    SELECT UPPER('case');  -- 'CASE'
    
  3. INITCAP(str)
    单词首字母大写

    SELECT INITCAP('hello world');  -- 'Hello World'
    

三、空白处理

  1. TRIM([LEADING|TRAILING|BOTH] [chars] FROM str)

    SELECT TRIM('  space  ');        -- 'space'
    SELECT TRIM(LEADING '0' FROM '000123'); -- '123'
    
  2. LTRIM(str [, chars])

    SELECT LTRIM('xxxSQL', 'x');  -- 'SQL'
    
  3. RTRIM(str [, chars])

    SELECT RTRIM('SQLxxx', 'x');  -- 'SQL'
    

四、子串提取

  1. SUBSTRING(str FROM start [FOR length])

    SELECT SUBSTRING('PostgreSQL' FROM 6 FOR 3);  -- 'gre'
    
  2. SUBSTR(str, start [, length])

    SELECT SUBSTR('Database', 3, 4);  -- 'taba'
    
  3. LEFT(str, n)

    SELECT LEFT('PostgreSQL', 4);  -- 'Post'
    
  4. RIGHT(str, n)

    SELECT RIGHT('PostgreSQL', 3);  -- 'SQL'
    
  5. SPLIT_PART(str, delimiter, field)

    SELECT SPLIT_PART('a,b,c', ',', 2);  -- 'b'
    

五、搜索与定位

  1. POSITION(substr IN str)

    SELECT POSITION('QL' IN 'PostgreSQL');  -- 9
    
  2. STRPOS(str, substr)

    SELECT STRPOS('Database', 'ta');  -- 3
    
  3. LENGTH(str) / CHAR_LENGTH(str)

    SELECT LENGTH('汉字');  -- 2 (字符数)
    
  4. OCTET_LENGTH(str)
    字节数计算

    SELECT OCTET_LENGTH('汉字');  -- 6 (UTF-8)
    

六、字符串修改

  1. REPLACE(str, from, to)

    SELECT REPLACE('foo bar bar', 'bar', 'baz');  -- 'foo baz baz'
    
  2. OVERLAY(str PLACING new FROM start [FOR length])

    SELECT OVERLAY('xxxxSQL' PLACING 'Postgre' FROM 1 FOR 4);  -- 'PostgreSQL'
    
  3. REPEAT(str, count)

    SELECT REPEAT('A', 3);  -- 'AAA'
    
  4. REVERSE(str)

    SELECT REVERSE('SQL');  -- 'LQS'
    

七、填充与格式化

  1. LPAD(str, length [, fill])

    SELECT LPAD('7', 3, '0');  -- '007'
    
  2. RPAD(str, length [, fill])

    SELECT RPAD('Hi', 5, '!');  -- 'Hi!!!'
    
  3. TO_CHAR(value, format)
    格式化数字/日期为字符串

    SELECT TO_CHAR(123.45, '999D99');  -- '123.45'
    

八、编码转换

  1. ASCII(char)

    SELECT ASCII('A');  -- 65
    
  2. CHR(code)

    SELECT CHR(65);  -- 'A'
    
  3. ENCODE(data, format)

    SELECT ENCODE('text'::bytea, 'base64');  -- 'dGV4dA=='
    
  4. DECODE(str, format)

    SELECT DECODE('dGV4dA==', 'base64');  -- \x74657874 (bytea)
    

九、正则表达式(高级匹配)

  1. REGEXP_MATCH(str, pattern)

    SELECT REGEXP_MATCH('foo@bar.com', '(.+)@(.+)');  -- {foo,bar.com}
    
  2. REGEXP_REPLACE(str, pattern, replace)

    SELECT REGEXP_REPLACE('a1b2c3', '\d', 'X');  -- 'aXbXcX'
    
  3. REGEXP_SPLIT_TO_ARRAY(str, pattern)

    SELECT REGEXP_SPLIT_TO_ARRAY('apple,banana;orange', '[,;]');  -- {apple,banana,orange}
    
  4. ~ (正则匹配运算符)

    SELECT 'abc' ~ '^a';  -- true
    

十、其他实用函数

  1. FORMAT(formatstr, ...)

    SELECT FORMAT('Hello %s, your ID: %L', 'Alice', 'id-123'); 
    -- 'Hello Alice, your ID: ''id-123'''
    
  2. QUOTE_IDENT(str)
    添加标准引号(用于标识符)

    SELECT QUOTE_IDENT('user name');  -- "user name"
    
  3. QUOTE_LITERAL(str)
    添加标准引号(用于字符串)

    SELECT QUOTE_LITERAL(E'O\'Reilly');  -- 'O''Reilly'
    
  4. MD5(str)

    SELECT MD5('password');  -- '5f4dcc3b5aa765d61d8327deb882cf99'
    
  5. TRANSLATE(str, from, to)
    字符级替换

    SELECT TRANSLATE('12345', '143', 'ax');  -- 'a2x5' (1→a, 4→x, 3→空)
    

使用技巧:

  1. NULL 处理:多数函数返回 NULL 当输入为 NULL(除 CONCAT 等特例)
  2. 索引优化LIKE 'prefix%' 可用索引,LIKE '%suffix' 不可用
  3. 正则性能:复杂正则可能影响性能,优先用简单字符串函数
  4. 多字节编码:处理非 ASCII 字符时注意 LENGTH 与 OCTET_LENGTH 区别

📌 完整函数列表参考:PostgreSQL 字符串函数文档
可通过 \df *string* 在 psql 中快速检索相关函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2405748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux Docker的简介

参考资料 30分钟Docker入门教程 ◀ 本篇博客所有图片皆来自于该视频截图阮一峰 - Docker 入门教程 目录 一. 环境配置时可能会遇到的问题二. 什么是Docker三. 虚拟机 与 Docker 的区别3.1 虚拟机3.2 Docker 四. Docker的基本架构五. Dockerfile 一. 环境配置时可能会遇到的问题…

极昆仑智慧与数元灵科技达成战略合作

近日,北京极昆仑智慧科技有限公司与北京数元灵科技有限公司正式签署产品级融合战略合作协议,双方将围绕 "AIBI商业智能分析" " Hybrid RAG 大模型问答" 等核心大模型应用,实现技术架构与业务场景的深度集成,…

第四讲:类和对象(下)

1. 再探构造函数 • 之前我们实现构造函数时,初始化成员变量主要使⽤函数体内赋值,构造函数初始化还有⼀种⽅ 式,就是初始化列表,初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成 员列表&#xff…

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Dad Jokes(冷笑话卡片)

📅 我们继续 50 个小项目挑战!—— DadJokes 组件 仓库地址:https://github.com/SunACong/50-vue-projects 项目预览地址:https://50-vue-projects.vercel.app/ 豆包翻译确实可以,冷笑话应该属于各类语言比较难理解的…

Spring AOP执行原理源码解析

对【com.example.demo.TestAspect#aopTest】连接点增加了五个通知 在调用【com.example.demo.A#testAop()】(用户自定义)方法时,Cglib拦截器对其进行了拦截 可以看到执行顺序分别是环绕前置,前置,环绕后置,…

基于FPGA的超声波显示水位距离,通过蓝牙传输水位数据到手机,同时支持RAM存储水位数据,读取数据。

基于FPGA的超声波显示水位距离 前言一、整体框架二、代码架构1.超声波测距模块2.蓝牙数据发送模块3.数码管数据切换模块4.数码管驱动模块6.串口驱动7.顶层模块8.RAM ip核 仿真相关截图 前言 随着工业化进程的加速和环境保护意识的提升,对水资源管理和水位监测的需求…

在Windows下利用LoongArch-toolchain交叉编译Qt

文章目录 0.交叉编译的必要性1.下载交叉编译工具链1.1.直接在Windows下使用mingw(不使用虚拟机)编译(还没成功,无法编译)1.2.在虚拟机中的Ubuntu中进行交叉编译 2.下载qt源码3.编译Qt3.1.创建loongarch64的mkspec3.2.创…

AIRIOT无人机安防解决方案

随着无人机技术的飞速发展和广泛应用,其在安防领域的价值日益凸显,从关键设施巡检、大型活动安保到边境巡防、应急救援,无人机正成为立体化安防体系不可或缺的“空中哨兵”。然而,无人机安防应用蓬勃发展的同时,其自身…

华为OD机考 - 水仙花数 Ⅰ(2025B卷 100分)

import java.util.*; public static Integer get(int count,int c){if(count<3||count>7){return -1;}//存储每位数的最高位……最低位int[] arr new int[count];List<Integer> res new ArrayList<>();for(int i(int) Math.pow(10,count-1);i<(int) Math…

php apache构建 Web 服务器

虚拟机配置流程winsever2016配置Apache、Mysql、php_windows server 2016配置web服务器-CSDN博客 PHP 和 Apache 通过 ​​模块化协作​​ 共同构建 Web 服务器&#xff0c;以下是它们的交互机制和工作流程&#xff1a; ​​一、核心组件分工​​ 组件角色​​Apache​​Web …

打通印染车间“神经末梢”:DeviceNet转Ethernet/IP连接机器人的高效方案

在印染行业自动化升级中&#xff0c;设备联网需求迫切。老旧印染设备多采用Devicenet协议&#xff0c;而新型工业机器人普遍支持Ethernet/IP协议&#xff0c;协议不兼容导致数据交互困难&#xff0c;设备协同效率低、生产监控滞后&#xff0c;成了行业数字化转型的阻碍。本文将…

2025-06-02-IP 地址规划及案例分析

IP 地址规划及案例分析 参考资料 Plan for IP addressing - Cloud Adoption Frameworkwww.cnblogs.comimage-hosting/articles at master jonsam-ng/image-hosting 概述 在网络通信中&#xff0c;MAC 地址与 IP 地址分别位于 OSI 模型的数据链路层和网络层&#xff0c;二者协…

AUTOSAR实战教程--开放式通用DoIP刷写工具OpenOTA开发计划

目录 软件概述 安装与运行 界面说明 3.1 功能区划分 3.2 状态显示 基本操作流程 4.1 DoIP连接配置 4.2 服务配置&#xff08;刷写流程&#xff09; 4.3 执行操作 4.4 保存配置 4.5 加载配置 功能详解 5.1 核心功能模块 诊断服务配置 通信设置 文件下载 工具功…

AI赋能的浏览器自动化:Playwright MCP安装配置与实操案例

以下是对Playwright MCP的简单介绍&#xff1a; Playwright MCP 是一个基于 Playwright 的 MCP 工具&#xff0c;提供浏览器自动化功能不要求视觉模型支持&#xff0c;普通的文本大语言模型就可以通过结构化数据与网页交互支持多种浏览器操作&#xff0c;包括截图、点击、拖动…

【技术笔记】MSYS2 指定 Python 版本安装方案

#工作记录 MSYS2 指定 Python 版本安装 一、前置条件 安装指定版本需要在干净的 MSYS2 环境中执行&#xff0c;为保证工具链的兼容性&#xff0c;若已安装 Python&#xff0c;需先卸载 Python 及与该版本深度绑定的工具链。具体操作如下&#xff1a; 卸载 Python&#xff1a…

《校园生活平台从 0 到 1 的搭建》第一篇:创建项目与构建目录结构

在本系列第一篇中&#xff0c;我们将从项目初始化开始&#xff0c;搭建基本的目录结构&#xff0c;并完成四个主页面的创建与 TabBar 设置。 &#xff08;tip&#xff1a;你可能会觉得有点 ai 化&#xff0c;因为这个文案是我自己写了一遍文案之后让 ai 去优化输出的&#xff0…

1 Studying《蓝牙核心规范5.3》

目录 [Vol 0][Part B 蓝牙规范要求] 3 定义 3.1 蓝牙产品类型 4 核心配置 4.1 基本速率核心配置 4.2 增强型数据速率核心配置 4.4 低功耗核心配置 4.5 基本速率和低功耗结合的核心配置 4.6 主机控制器接口核心配置 [Vol 1][Part A 架构]1 概述 1.1 BR/EDR操作概述 …

STM32+MPU6050传感器

#创作灵感## 在嵌入式系统开发中&#xff0c;STM32F103C8T6单片机与MPU6050传感器的组合因其高性能、低功耗以及丰富的功能而备受青睐。本文将简单介绍如何在Keil 5开发环境中实现STM32F103C8T6与MPU6050的连接和基本数据采集&#xff0c;带你快速入门智能硬件开发。 一、硬件…

26考研——数据的表示和运算_整数和实数的表示(2)

408答疑 文章目录 二、整数和实数的表示1、整数的表示1.1、无符号整数的表示1.2、有符号整数的表示1.3、C 语言中的整数类型及类型转换1.3.1、C 语言中的整型数据类型1.3.2、有符号数和无符号数的转换1.3.3、不同字长整数之间的转换 2、实数的表示2.1、浮点数的相关概念2.2、浮…

关于智能体API参考接口

关于智能体在Flask的源码&#xff1a;请求体(在payload里的是请求体)、请求头&#xff08;在headers里的i局势请求头&#xff09;。 我的例子&#xff1a; 我的疑问&#xff1a;为什么没按Coze官方API文档格式&#xff0c;在Apifox里发POST请求却能收到回复&#xff1f; 1. 你…