当前位置: 首页 > news >正文

Postgresql字符串操作函数

目录

一、基础字符串操作

二、大小写转换

三、空白处理

四、子串提取

五、搜索与定位

六、字符串修改

七、填充与格式化

八、编码转换

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

十、其他实用函数

使用技巧:


以下是 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.lqws.cn/news/147313.html

相关文章:

  • Python Excel 文件处理:openpyxl 与 pandas 库完全指南
  • WebRTC中的几个Rtp*Sender
  • 阿里云事件总线 EventBridge 正式商业化,构建智能化时代的企业级云上事件枢纽
  • 基于RK3568的多网多串电力能源1U机箱解决方案,支持B码,4G等
  • 【计算机网络】NAT、代理服务器、内网穿透、内网打洞、局域网中交换机
  • 计算机网络领域所有CCF-A/B/C类期刊汇总!
  • 如何选择专业数据可视化开发工具?为您拆解捷码全功能和落地指南!
  • 企业管理中,商业智能BI主要做哪些事情?
  • 解决神经网络输出尺寸过小的实战方案
  • LLaMA.cpp 文本生成惩罚机制详解:从原理到实践的完整指南
  • LLaMA-Factory和python版本的兼容性问题解决
  • 任务调度器-关于中心化调度 vs 去中心化调度的核心区别
  • Authpf(OpenBSD)认证防火墙到ssh连接到SSH端口转发技术栈 与渗透网络安全的关联 (RED Team Technique )
  • Spring之事务管理方式
  • 网络安全全景解析
  • 【联网玩具】EN 18031欧盟网络安全认证
  • 解读《网络安全法》最新修订,把握网络安全新趋势
  • 【论文解读】MemGPT: 迈向为操作系统的LLM
  • 攻防世界-XCTF-Web安全最佳刷题路线
  • 【网络安全】XSS攻击
  • 浅谈 Linux 防火墙:从原理到实践
  • 相机Camera日志分析之二十五:高通相机Camx 基于预览1帧的process_capture_request四级日志分析详解
  • 【SSM】SpringBoot学习笔记1:SpringBoot快速入门
  • AWS Elastic Beanstalk + CodePipeline(Python Flask Web的国区CI/CD)
  • Kubernetes (k8s)版本发布情况
  • 厂区能源监控系统:网关赋能下的高效能源管理与环保监测
  • 导航路径优化(一)——平滑
  • NumPy数组操作完全指南:从入门到精通
  • 实数域上的二分
  • aiohttp异步爬虫实战:从零构建高性能图书数据采集系统(2025最新版)