postgresql提供SUBString()、LEFT()、RIGHT()和切片语法截取字符串。1. SUBSTRING(string FROM start for Length)从指定位置截取固定长度,如SUBSTRING(‘Hello World’ FROM 3 FOR 4)返回’llo ‘;2. LEFT(‘Hello World’, 5)取前5个字符得’Hello’,RIGHT取后n个字符;3. 切片语法’string'[start:end]类似数组索引,如’Hello World'[2:5]返回’ello’。位置均从1开始,按需选择方法。

PostgreSQL 提供了多种方式来截取字符串,常用的方法有 SUBSTRING()、LEFT()、RIGHT() 和使用 [] 的切片语法。下面介绍这些方法的具体用法和示例。
SUBSTRING() 函数
这是最常用的字符串截取函数,支持从指定位置开始截取一定长度,也支持正则表达式。
- SUBSTRING(string FROM start FOR length):从 start 位置开始,截取 length 个字符
- SUBSTRING(string FROM start):从 start 开始到末尾
- SUBSTRING(string FROM pattern):使用正则提取匹配部分
示例:
-- 截取第3个字符开始的4个字符 SELECT SUBSTRING('Hello World' FROM 3 FOR 4); -- 返回 'llo ' <p>-- 从第7个字符开始到结尾 SELECT SUBSTRING('Hello World' FROM 7); -- 返回 'World'</p><p>-- 使用正则提取邮箱中的域名 SELECT SUBSTRING('user@example.com' FROM '@(.+)'); -- 返回 'example.com'</p>
LEFT() 和 RIGHT() 函数
用于快速提取字符串左侧或右侧的若干字符。
- LEFT(string, n):返回前 n 个字符
- RIGHT(string, n):返回后 n 个字符
示例:
-- 取前5个字符 SELECT LEFT('Hello World', 5); -- 返回 'Hello' <p>-- 取后5个字符 SELECT RIGHT('Hello World', 5); -- 返回 'World'</p>
字符串切片语法(类似数组)
PostgreSQL 支持使用方括号对字符串进行切片,语法类似于数组索引,注意起始位置是 1。
- string[start:end]:从 start 到 end(包含 end)
- string[start:]:从 start 到结尾
- string[:end]:从开头到 end
示例:
-- 第2到第5个字符 SELECT 'Hello World'[2:5]; -- 返回 'ello' <p>-- 从第7个字符到结尾 SELECT 'Hello World'[7:]; -- 返回 'World'</p><p>-- 前6个字符 SELECT 'Hello World'[:6]; -- 返回 'Hello '</p>
基本上就这些常用方法。根据实际场景选择合适的方式:简单截取用 LEFT/RIGHT,灵活定位用 SUBSTRING,习惯切片语法可用 []。注意位置从 1 开始,不是 0。不复杂但容易忽略细节。