PostgreSQL 提供了丰富的字符串函数,可以对字符串进行操作、处理和格式化。以下是一些常用的字符串函数及其示例:
1. LENGTH()
- 计算字符串的长度
SELECT LENGTH('Hello World'); -- 返回 11
2. CONCAT()
- 拼接字符串
将多个字符串连接在一起。
SELECT CONCAT('Hello', ' ', 'World'); -- 返回 'Hello World'
3. ||
- 拼接操作符
类似于 CONCAT()
,用于连接字符串。
SELECT 'Hello' || ' ' || 'World'; -- 返回 'Hello World'
4. SUBSTRING()
- 截取字符串
从字符串中提取子字符串,指定开始位置和长度。
SELECT SUBSTRING('PostgreSQL', 1, 4); -- 返回 'Post'
5. POSITION()
- 查找子字符串的位置
返回子字符串在目标字符串中的位置(从1开始)。
SELECT POSITION('gre' IN 'PostgreSQL'); -- 返回 5
6. UPPER()
和 LOWER()
- 转换大小写
UPPER()
:将字符串转换为大写。LOWER()
:将字符串转换为小写。
SELECT UPPER('postgresql'); -- 返回 'POSTGRESQL'
SELECT LOWER('PostgreSQL'); -- 返回 'postgresql'
7. TRIM()
- 去除字符串两端的空格或指定字符
可以去除字符串开头或结尾的空格,也可以去除指定字符。
-- 去除两端空格
SELECT TRIM(' Hello World '); -- 返回 'Hello World'-- 去除指定字符
SELECT TRIM(BOTH 'x' FROM 'xxHello Worldxx'); -- 返回 'Hello World'
8. LTRIM()
和 RTRIM()
- 去除左侧或右侧的空格或字符
LTRIM()
:去除字符串左侧的空格或指定字符。RTRIM()
:去除字符串右侧的空格或指定字符。
-- 去除左侧空格
SELECT LTRIM(' Hello World'); -- 返回 'Hello World'-- 去除右侧空格
SELECT RTRIM('Hello World '); -- 返回 'Hello World'
9. REPLACE()
- 替换子字符串
将字符串中的某个子字符串替换为另一个字符串。
SELECT REPLACE('Hello World', 'World', 'PostgreSQL'); -- 返回 'Hello PostgreSQL'
10. OVERLAY()
- 替换子字符串的一部分
用于将字符串中的某个部分替换为另一个字符串。
SELECT OVERLAY('TxxxxT' PLACING 'es' FROM 2 FOR 4); -- 返回 'TestT'
11. INITCAP()
- 首字母大写
将字符串的每个单词的首字母转换为大写,其余部分小写。
SELECT INITCAP('hello world'); -- 返回 'Hello World'
12. LPAD()
和 RPAD()
- 填充字符串
LPAD()
:在字符串左侧填充指定字符,使其达到特定长度。RPAD()
:在字符串右侧填充指定字符,使其达到特定长度。
-- 左侧填充
SELECT LPAD('123', 5, '0'); -- 返回 '00123'-- 右侧填充
SELECT RPAD('123', 5, '0'); -- 返回 '12300'
13. SPLIT_PART()
- 分割字符串
根据指定的分隔符分割字符串,并返回指定部分。
SELECT SPLIT_PART('2024-10-01', '-', 1); -- 返回 '2024'
SELECT SPLIT_PART('2024-10-01', '-', 2); -- 返回 '10'
14. REVERSE()
- 反转字符串
将字符串的字符顺序反转。
SELECT REVERSE('PostgreSQL'); -- 返回 'LQSergtsoP'
15. TO_CHAR()
- 格式化数字或日期为字符串
可以将数字或日期格式化为指定的字符串格式。
-- 将数字格式化为带逗号的格式
SELECT TO_CHAR(1234567.89, 'FM999,999,999.00'); -- 返回 '1,234,567.89'-- 将日期格式化为字符串
SELECT TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD'); -- 返回 '2024-10-01'
16. REGEXP_REPLACE()
- 正则表达式替换
使用正则表达式匹配并替换字符串中的内容。
-- 使用正则表达式将连续的空格替换为单个空格
SELECT REGEXP_REPLACE('Hello World', '\s+', ' ', 'g'); -- 返回 'Hello World'
17. REGEXP_MATCHES()
- 正则表达式匹配
返回匹配正则表达式的子字符串。
-- 使用正则表达式匹配 email 地址
SELECT REGEXP_MATCHES('user@example.com', '([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})');
-- 返回:{user, example.com}
18. FORMAT()
- 格式化字符串
使用C语言风格的格式化输出。
SELECT FORMAT('Hello %s, you are %s years old.', 'Alice', 30); -- 返回 'Hello Alice, you are 30 years old.'
总结
这些字符串函数可以帮助处理和操作各种字符串数据,在日常开发中非常实用。根据业务需求,选择合适的函数可以有效提高操作效率。