PostgreSQL Substring教程

本文介绍PostgreSQL Substring函数,用于从字符串中抽取字串。

1. Substring函数语法

该函数返回字符串,语法有多种形式。

1.1 三个参数

SUBSTRING ( string ,start_position , length )

参数解释:

string 可以是 char, varchar, text等数据类型。

start_position 是integer类型,指定从哪开始抽取. 如果等于零,则从第一个字符开始。虽然其他数据库可以为负数,但这里只能是正数。

length 是integer类型,决定从start_position开始抽取字符串的长度。如果从开始位置到指定长度的总数大于字符串的字符数量,则返回从开始位置的全部字符串。该参数可选,忽略则返回从开始位置的全部字符串。

1.2 单个参数

另外一种语法形式:

substring(string from start_position for length);

这种形式一次性指定三个参数。

1.3 正则表达式

该函数也支持 POSIX 正则表达式,pattern参数指定匹配字符串模式,语法如下:

SUBSTRING(string,pattern);

当然也可以写成带from的单参数形式:

SUBSTRING(string FROM pattern)

如果不匹配返回null,如果pattern包含任何圆括号,substring函数将返回与第一个带圆括号的子表达式的匹配文本。

2. 示例

2.1 SUBSTRING示例

SELECT
	SUBSTRING ('PostgreSQL', 1, 8); -- PostgreS
SELECT
	SUBSTRING ('PostgreSQL', 8); -- SQL

from形式的示例:

SELECT
	SUBSTRING ('PostgreSQL' FROM 1 FOR 8); -- PostgreS
SELECT
	SUBSTRING ('PostgreSQL' FROM 8); -- SQL

查询表字段示例:

SELECT
	last_name,
	SUBSTRING( first_name, 1, 1 ) AS initial
FROM
	customer
ORDER BY
	last_name;

查询last_name,取first_name的第一个字母。

2.2 正则表达式示例

示例返回9001

SELECT SUBSTRING ('The house no. is 9001','([0-9]{1,4})' ) as house_no

顺便说下,字符串比较时也可以直接使用正则表达式。

(~) 大小写敏感方式匹配正则表达式
(~) 大小写不敏感方式匹配正则表达式
(!~) 大小写敏感方式不匹配正则表达式
(!~
) 大小写不敏感方式不匹配正则表达式

示例:

‘London’ ~ ‘London.*’ 
‘London’ ~* ’London.*’
‘London’ !~ ’London.*’
‘London’ !~* ’London.*’

select * from customers c where name ~ 'don';        # 匹配London

3. 总结

本文解释PostgreSql函数SUBSTRING,通过示例学习了多种应用形式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值