PostgreSQL常用字符串函数
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.'
 
总结
这些字符串函数可以帮助处理和操作各种字符串数据,在日常开发中非常实用。根据业务需求,选择合适的函数可以有效提高操作效率。
