↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 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 已于 2007 年 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)转换。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。