Skip to main content
 首页 » 数据库

PostgreSQL Substring教程

2022年07月19日141wuhuacong

本文介绍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,通过示例学习了多种应用形式。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/112546754
阅读延展