pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
本节描述用于检查和操作字符串值的函数和操作符。这里的字符串包括 CHARACTER、CHARACTER VARYING 和 TEXT 所有类型的值。除非另有说明, 下面列出的所有函数都适用于这些类型,但使用 CHARACTER 类型时,应注意自动填充空格可能带来的影响。通常, 这里描述的函数也能用于非字符串类型的数据, 方法是先把该数据转换为字符串表示。一些函数也为位串类型 提供了原生实现。
SQL定义了一些字符串函数,它们使用特殊语法,其中用某些关键字而不是逗号来分隔参数。详情见表 4.6。这些函数也使用常规的函数调用语法实现(见表 4.7)。
表 4.6. SQL字符串函数和操作符
| 函数 | 返回类型 | 描述 | 示例 | 结果 |
|---|---|---|---|---|
string || string |
text |
字符串串接 | 'Postgre' || 'SQL' | PostgreSQL |
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) | oma |
trim([leading | trailing | both] [characters] from string) |
text |
移除字符串开始端/结束端/两端(默认为两端)仅含指定字符(默认为空格)的最长字符串。 | trim(both 'x' from 'xTomx') | 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 |
initcap(text) |
text |
把每个单词(以空白分隔)的首字母转换为大写。 | initcap('hi thomas') | Hi Thomas |
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 |
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( 相同,但注意参数 顺序相反) |
strpos('high', 'ig') | 2 |
substr(string, from [, count]) |
text |
提取指定的子串(与 substring( 相同)。 |
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 |
to_ascii 函数只支持从 LATIN1、LATIN2、WIN1250(CP1250)转换。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。