↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本。 PostgreSQL 7.2 已结束支持。 请参阅 当前版本手册.

4.4. 字符串函数和操作符 #

本节描述用于检查和操作字符串值的函数和操作符。这里的字符串包括 CHARACTER、CHARACTER VARYING 和 TEXT 所有类型的值。除非另有说明,下面列出的所有函数都适用于这些类型,但使用 CHARACTER 类型时,应注意自动填充空格可能带来的影响。通常,这里描述的函数也能用于非字符串类型的数据,方法是先把该数据转换为字符串表示。一些函数也为位串类型提供了原生实现。

SQL定义了一些字符串函数,它们使用特殊语法,其中用某些关键字而不是逗号来分隔参数。详情见表 4.6。这些函数也使用常规的函数调用语法实现(见表 4.7)。

表 4.6. SQL字符串函数和操作符

函数返回类型描述示例结果
string || string text 字符串串接 'Postgre' || 'SQL'PostgreSQL
bit_length(string)integer串中的位数bit_length('jose')32
char_length(string) or character_length(string)integer 字符串中的字符数 char_length('jose')4
lower(string)text把字符串转换为小写。lower('TOM')tom
octet_length(string)integer串中的字节数octet_length('jose')4
position(substring in string)integer指定子串的位置position('om' in 'Thomas')3
substring(string [from integer] [for integer])text提取子串 substring('Thomas' from 2 for 3)hom
trim([leading | trailing | both] [characters] from string) text移除字符串开始端/结束端/两端(默认为两端)仅含指定字符(默认为空格)的最长字符串。trim(both 'x' from 'xTomxx')Tom
upper(string)text把字符串转换为大写。upper('tom')TOM

下面还有一些其他的字符串处理函数。其中一些在内部用于实现上面列出的 SQL 标准字符串函数。

表 4.7. 其他字符串函数

函数返回类型描述示例结果
ascii(text)integer返回参数第一个字符的 ASCII 码。ascii('x')120
btrim(string text, trim text)text 移除string开头和结尾处仅由trim中的字符组成的最长字符串。 btrim('xyxtrimyyx', 'xy')trim
chr(integer)text返回给定 ASCII 码的字符。chr(65)A
convert(string text, [src_encoding name,] dest_encoding name) text 用 dest_encoding 转换 string。原来的编码由 src_encoding 指定。如果省略 src_encoding,则假定使用数据库编码。 convert( 'text_in_unicode', 'UNICODE', 'LATIN1')ISO 8859-1 表示的text_in_unicode
initcap(text)text把每个单词(以空白分隔)的首字母转换为大写。initcap('hi thomas')Hi Thomas
length(string)integer 字符串的长度 length('jose')4
lpad(string text, length integer [, fill text]) text 在 string 的前面添加字符 fill(默认为空格)把它填充到 length 长度。如果 string 已经超过 length,则把它截断(在右边)。 lpad('hi', 5, 'xy')xyxhi
ltrim(string text, trim text)text 移除字符串开头处仅由trim中的字符组成的最长字符串。 ltrim('zzzytrim', 'xyz')trim
pg_client_encoding()name返回当前客户端编码的名称。pg_client_encoding()SQL_ASCII
repeat(text, integer)text将文本重复指定次数。repeat('Pg', 4)PgPgPgPg
rpad(string text, length integer [, fill text]) text 在 string 的后面添加字符 fill(默认为空格)把它填充到 length 长度。如果 string 已经超过 length,则把它截断。 rpad('hi', 5, 'xy')hixyx
rtrim(string text, trim text)text 移除字符串结尾处仅由trim中的字符组成的最长字符串。 rtrim('trimxxxx', 'x')trim
strpos(string, substring)text 定位指定子串(与 position(substring in string) 相同,但注意参数顺序相反) strpos('high', 'ig')2
substr(string, from [, count])text 提取指定的子串(与 substring(string from from for count) 相同)。 substr('alphabet', 3, 2)ph
to_ascii(text [, encoding])text把文本从多字节编码转换为 ASCII。to_ascii('Karel')Karel
translate(string text, from text, to text) text string中任何与from集合中字符匹配的字符,都会被替换成to集合中的相应字符。 translate('12345', '14', 'ax')a23x5
encode(data bytea, type text) text 把二进制数据编码为仅含 ASCII 的表示。支持的类型有:'base64'、'hex'、'escape'。 encode('123\\000\\001', 'base64')MTIzAAE=
decode(string text, type text) bytea 解码string中先前用encode()编码的二进制数据。参数类型与encode()中的相同。 decode('MTIzAAE=', 'base64')123\000\001

to_ascii 函数只支持从 LATIN1、LATIN2、WIN1250(CP1250)转换。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.