FUNCTION字符串函数和操作符
left
返回字符串最左侧的 n 个字符;如果 n 为负,则返回除最后 |n| 个字符之外的全部字符。
Returns first n characters in the string, or when n is negative, returns all but last |n| characters.
字符串函数和操作符 引入 9.1 现存至 20 devel 1 条签名 0 次签名变更
- 分组
- 字符串函数和操作符
- 签名数
- 1 条
- 引入版本
- 9.1
- 状态
- 现存
- 签名变更
- 未变过
- 本版来源
- 英文原文
版本轨迹
相对 PostgreSQL 17 无变化。
说明
n 个字符;如果 n 为负,则返回除最后 |n| 个字符之外的全部字符。left ( string text, n integer ) → text返回字符串最左侧的
n 个字符;如果 n 为负,则返回除最后 |n| 个字符之外的全部字符。签名
PostgreSQL 18.7 里 left 的 1 条签名,按上游手册顺序排列。参数名用斜体,类型用弱化色, 之后是返回类型。中文说明来自同版本手册与审阅译文,悬停可查看每条说明的来源。
-
left(stringtext,ninteger) →text返回字符串最左侧的n个字符;如果n为负,则返回除最后 |n| 个字符之外的全部字符。left('abcde', 2)ab
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的签名。
-
PostgreSQL 13 ← 12 手册重排
这一跳手册重排了函数表的写法,签名文本整体改写,只记函数的增删,不逐条比较签名。
-
PostgreSQL 9.1 ← 9.0 新增此函数
PostgreSQL 9.1 起可用
签名矩阵
每条签名在给出了签名的 17 个版本里的存在情况;方格指向该版的签名。只在正文里提到此函数、没有给出签名的版本不列进来,上面的版本轨迹里仍然有它们。签名文本在 PostgreSQL 13 前后写法不同,跨越那一跳的同一条签名会显示成两行。
存在 不存在
同组函数
| 函数 | 签名 | 主签名 | 版本变动 | 最近变更 |
|---|---|---|---|---|
ascii基线 |
1 | ascii ( text ) → integer |
8.22 次 | |
| 返回参数的第一个字符的数字代码。在 UTF8 编码中,返回该字符的 Unicode 码点。在其他多字节编码中,该参数必须是一个 ASCII 字符。 | 现存 | |||
bit_length |
3 | bit_length ( text ) → integer |
8.11 次 | |
| 返回字符串中的位数(8 倍于 octet_length)。 | 现存 | |||
btrim基线 |
2 | btrim ( string text [, characters text ] ) → text |
8.04 次 | |
| 从 string 的开头和结尾移除仅由 characters 中字符(默认为空格)组成的最长字符串。 | 现存 | |||
casefold |
1 | casefold ( text ) → text |
— | |
| 根据排序规则对输入字符串执行大小写折叠。大小写折叠与大小写转换类似,但其目的是方便字符串的不区分大小写匹配,而大小写转换的目的是将字符串转换为特定的大小写形式。此函数只能在服务器编码为 UTF8 时使用。 | 现存 | |||
char_length基线 |
1 | char_length ( text ) → integer |
8.11 次 | |
| 返回字符串中的字符数。 | 现存 | |||
character_length基线 |
1 | character_length ( text ) → integer |
8.11 次 | |
| 返回字符串中的字符数。 | 现存 | |||
chr基线 |
1 | chr ( integer ) → text |
8.11 次 | |
| 返回给定代码的字符。在 UTF8 编码中该参数被视作一个 Unicode 码点。在其他多字节编码中该参数必须指定一个 ASCII 字符。chr(0) 字符不被允许,因为文本数据类型不能存储这种字符。 | 现存 | |||
concat |
1 | concat ( val1 "any" [, val2 "any" [, ...] ] ) → text |
— | |
| 串接所有参数的文本表示。NULL 参数被忽略。 | 现存 | |||
concat_ws |
1 | concat_ws ( sep text, val1 "any" [, val2 "any" [, ...] ] ) → text |
— | |
| 用分隔符串接除第一个参数外的所有参数。第一个参数用作分隔符字符串,不应为 NULL。其他 NULL 参数将被忽略。 | 现存 | |||
format |
2 | format ( formatstr text [, formatarg "any" [, ...] ] ) → text |
9.31 次 | |
| 根据格式字符串对参数进行格式化;参见第 9.4.1 节。这个函数类似于 C 函数 sprintf。 | 现存 | |||
getdatabaseencoding |
1 | getdatabaseencoding ( ) → name |
— | |
| 返回当前数据库的编码名称。 | 现存 | |||
initcap基线 |
1 | initcap ( text ) → text |
8.21 次 | |
| 将每个单词的第一个字母转换为大写(如果该字母是二合字母,且区域设置为 ICU 或 builtin PG_UNICODE_FAST,则转换为标题大小写),其余字母转换为小写。使用 libc 或 builtin 区域设置提供者时,单词是由非字母数字字符分隔的字母数字字符序列;使用 ICU 区域设置提供者时,单词按 ICU 的 u_strToTitle 函数划分。 | 现存 | |||
left |
1 | left ( string text, n integer ) → text |
— | |
| 返回字符串最左侧的 n 个字符;如果 n 为负,则返回除最后 |n| 个字符之外的全部字符。 | 现存 | |||
length基线 |
6 | length ( text ) → integer |
9.16 次 | |
| 返回字符串中的字符数。 | 现存 | |||
lower基线 |
3 | lower ( text ) → text |
142 次 | |
| 根据数据库的区域设置规则,将字符串转换为全部小写。 | 现存 | |||
lpad基线 |
1 | lpad ( string text, length integer [, fill text ] ) → text |
8.11 次 | |
| 在 string 前面添加字符 fill(默认为空格),将其填充到长度 length。如果 string 已经长于 length,则从右侧截断。 | 现存 | |||
ltrim基线 |
2 | ltrim ( string text [, characters text ] ) → text |
144 次 | |
| 从 string 的开头移除仅由 characters 中字符(默认为空格)组成的最长字符串。 | 现存 | |||
md5 |
2 | md5 ( text ) → text |
8.22 次 | |
| 计算参数的 MD5 hash,结果以十六进制形式写入。 | 现存 | |||
normalize |
1 | normalize ( text [, form ] ) → text |
— | |
| 将字符串转换为指定的 Unicode 规范化形式。可选的 form 关键字指定如下形式:NFC(默认值)、NFD、NFKC 或 NFKD。该函数只能在服务器编码为 UTF8 时使用。 | 现存 | |||
octet_length基线 |
4 | octet_length ( text ) → integer |
8.11 次 | |
| 返回字符串的字节数。 | 现存 | |||
overlay |
3 | overlay ( string text PLACING newsubstring text FROM start integer [ FOR count integer ] ) → text |
9.02 次 | |
| 用 newsubstring 替换 string 中从第 start 个字符开始、长度为 count 个字符的子字符串。如果省略 count,则默认为 newsubstring 的长度。 | 现存 | |||
parse_ident |
1 | parse_ident ( qualified_identifier text [, strict_mode boolean DEFAULT true ] ) → text[] |
— | |
| 将 qualified_identifier 拆分为一个标识符数组,去除各个标识符的引号。默认情况下,最后一个标识符之后的额外字符被视为错误;但是,如果第二个参数为 false,则忽略这些额外的字符。(这种行为对于解析函数等对象的名称有作用。)请注意,此函数不会截断超长标识符。如果你想截断,你可以将结果转换为 name[]。 | 现存 | |||
pg_client_encoding |
1 | pg_client_encoding ( ) → name |
— | |
| 返回当前客户端编码名称。 | 现存 | |||
position基线 |
3 | position ( substring text IN string text ) → integer |
8.11 次 | |
| 返回 substring 在 string 中首次出现的位置;如果不存在则返回零。 | 现存 | |||
quote_ident |
1 | quote_ident ( text ) → text |
8.32 次 | |
| 为给定字符串添加适当的引号并返回,使其可用作 SQL 语句字符串中的标识符。仅在必要时(即字符串包含不能用于标识符的字符,或会发生大小写折叠时)添加引号。内嵌的引号会被适当地双写。另见例 41.1。 | 现存 | |||
quote_literal |
2 | quote_literal ( text ) → text |
8.32 次 | |
| 为给定字符串添加适当的引号并返回,使其可用作 SQL 语句字符串中的字符串字面量。内嵌的单引号和反斜杠会被适当地双写。注意,quote_literal 在输入为 null 时返回 null;如果参数可能为 null,quote_nullable 通常更合适。另见例 41.1。 | 现存 | |||
quote_nullable |
2 | quote_nullable ( text ) → text |
— | |
| 为给定字符串添加适当的引号并返回,使其可用作 SQL 语句字符串中的字符串字面量;如果参数为 null,则返回 NULL。内嵌的单引号和反斜杠会被适当地双写。另见例 41.1。 | 现存 | |||
regexp_count |
2 | regexp_count ( string text, pattern text [, start integer [, flags text ] ] ) → integer |
191 次 | |
| 返回 POSIX 正则表达式 pattern 在 string 中匹配的次数;参见第 9.7.3.1.2 节。 | 现存 | |||
regexp_instr |
2 | regexp_instr ( string text, pattern text [, start integer [, N integer [, endoption integer [, flags text [, subexpr integer ] ] ] ] ] ) → integer |
191 次 | |
| 返回 POSIX 正则表达式 pattern 在 string 中第 N 次匹配的位置;如果没有这样的匹配,则返回零。参见第 9.7.3.1.3 节。 | 现存 | |||
regexp_like |
2 | regexp_like ( string text, pattern text [, flags text ] ) → boolean |
191 次 | |
| 检查 POSIX 正则表达式 pattern 是否在 string 中出现;参见第 9.7.3.1.4 节。 | 现存 | |||
regexp_match |
2 | regexp_match ( string text, pattern text [, flags text ] ) → text[] |
191 次 | |
| 返回 POSIX 正则表达式 pattern 与 string 的第一次匹配中的子字符串;参见第 9.7.3.1.5 节。 | 现存 | |||
regexp_matches |
2 | regexp_matches ( string text, pattern text [, flags text ] ) → setof text[] |
191 次 | |
| 返回 POSIX 正则表达式 pattern 与 string 的第一次匹配中的子字符串;如果使用 g 标志,则返回所有匹配中的子字符串。参见第 9.7.3.1.6 节。 | 现存 | |||
regexp_replace |
4 | regexp_replace ( string text, pattern text, replacement text [, flags text ] ) → text |
194 次 | |
| 替换第一个与 POSIX 正则表达式 pattern 匹配的子字符串,如果使用了 g 标志,则替换所有这样的匹配;参见第 9.7.3.1.7 节。 | 现存 | |||
regexp_split_to_array |
2 | regexp_split_to_array ( string text, pattern text [, flags text ] ) → text[] |
191 次 | |
| 使用 POSIX 正则表达式作为分隔符拆分 string,生成一个结果的数组;参见第 9.7.3.1.9 节。 | 现存 | |||
regexp_split_to_table |
2 | regexp_split_to_table ( string text, pattern text [, flags text ] ) → setof text |
191 次 | |
| 使用 POSIX 正则表达式作为分隔符拆分 string,生成一组结果;参见第 9.7.3.1.8 节。 | 现存 | |||
regexp_substr |
2 | regexp_substr ( string text, pattern text [, start integer [, N integer [, flags text [, subexpr integer ] ] ] ] ) → text |
191 次 | |
| 返回 string 中 POSIX 正则表达式 pattern 的第 N 次匹配对应的子字符串;如果没有这样的匹配,则返回 NULL。参见第 9.7.3.1.10 节。 | 现存 | |||
repeat基线 |
1 | repeat ( string text, number integer ) → text |
8.12 次 | |
| 按 number 指定的次数重复 string。 | 现存 | |||
replace |
1 | replace ( string text, from text, to text ) → text |
— | |
| 将 string 中所有出现的子字符串 from 替换为子字符串 to。 | 现存 | |||
reverse |
2 | reverse ( text ) → text |
181 次 | |
| 颠倒字符串中字符的顺序。 | 现存 | |||
right |
1 | right ( string text, n integer ) → text |
— | |
| 返回字符串中的最后 n 个字符;如果 n 为负数,则返回除前 |n| 个字符之外的全部字符。 | 现存 | |||
rpad基线 |
1 | rpad ( string text, length integer [, fill text ] ) → text |
8.11 次 | |
| 在 string 后面追加字符 fill(默认为空格),将其填充到长度 length。如果 string 已经长于 length,则截断它。 | 现存 | |||
rtrim基线 |
2 | rtrim ( string text [, characters text ] ) → text |
143 次 | |
| 从 string 的结尾移除仅由 characters 中字符(默认为空格)组成的最长字符串。 | 现存 | |||
split_part |
1 | split_part ( string text, delimiter text, n integer ) → text |
8.12 次 | |
| 在出现 delimiter 时拆分 string,并返回第 n 个字段(从一开始计数);如果 n 为负数,则返回倒数第 |n| 个字段。 | 现存 | |||
starts_with |
1 | starts_with ( string text, prefix text ) → boolean |
— | |
| 如果 string 以 prefix 开始就返回真。 | 现存 | |||
string_to_array |
1 | string_to_array ( string text, delimiter text [, null_string text ] ) → text[] |
9.11 次 | |
| 将 string 按 delimiter 分割,并将结果字段形成 text 数组。如果 delimiter 是 NULL,则 string 中的每个字符将成为数组中的一个单独元素。如果 delimiter 是空字符串,则 string 被视为单个字段。如果提供了 null_string 且不是 NULL,则匹配该字符串的字段将被 NULL 替换。另请参见 array_to_string。 | 现存 | |||
string_to_table |
1 | string_to_table ( string text, delimiter text [, null_string text ] ) → setof text |
— | |
| 在出现 delimiter 时拆分 string,并将结果字段作为 text 行的集合返回。如果 delimiter 为 NULL,则 string 中的每个字符将成为结果的单独一行。如果 delimiter 为空字符串,则将 string 视为单个字段。如果提供了 null_string,并且不是 NULL,则匹配该字符串的字段将被 NULL 替换。 | 现存 | |||
strpos基线 |
1 | strpos ( string text, substring text ) → integer |
7.31 次 | |
| 返回 substring 在 string 中首次出现的位置;如果不存在则返回零。(与 position(substring in string) 相同,但请注意参数顺序相反。) | 现存 | |||
substr基线 |
2 | substr ( string text, start integer [, count integer ] ) → text |
— | |
| 提取 string 中从第 start 个字符开始的子字符串;若指定了长度,则提取 count 个字符。(与 substring(string from start for count) 相同。) | 现存 | |||
substring基线 |
11 | substring ( string text [ FROM start integer ] [ FOR count integer ] ) → text |
196 次 | |
| 提取 string 的子字符串:若指定了起始位置,则从第 start 个字符开始;若指定了长度,则在提取 count 个字符后停止。start 和 count 至少需要指定一个。 | 现存 | |||
to_ascii基线 |
3 | to_ascii ( string text ) → text |
8.21 次 | |
| 将 string 从其他编码转换为 ASCII,源编码可以用名称或编号指定。如果省略 encoding,则使用数据库编码(实际上,这也是唯一有用的情况)。转换主要是去除重音符号。只支持从 LATIN1、LATIN2、LATIN9 和 WIN1250 编码转换。(另一种更灵活的解决方案参见 unaccent 模块。) | 现存 | |||
to_bin |
2 | to_bin ( integer ) → text |
— | |
| 将数字转换为等价的二进制补码表示。 | 现存 | |||
to_hex |
2 | to_hex ( integer ) → text |
8.11 次 | |
| 将数字转换为等价的二进制补码的十六进制表示。 | 现存 | |||
to_oct |
2 | to_oct ( integer ) → text |
— | |
| 将数字转换为等价的二进制补码的八进制表示。 | 现存 | |||
translate基线 |
1 | translate ( string text, from text, to text ) → text |
— | |
| 将 string 中与 from 集合中匹配的每个字符替换为 to 集合中相应的字符。如果 from 长于 to,输入中出现的 from 中的额外字符会被删除。 | 现存 | |||
trim基线 |
4 | trim ( [ LEADING | TRAILING | BOTH ] [ characters text ] FROM string text ) → text |
144 次 | |
| 从 string 的开始、末端或两端(默认为 BOTH)移除仅包含 characters(默认为空格)字符的最长字符串。 | 现存 | |||
unicode_assigned |
1 | unicode_assigned ( text ) → boolean |
— | |
| 如果字符串中的所有字符都是已分配的 Unicode 码点,则返回 true;否则返回 false。此函数只能在服务器编码为 UTF8 时使用。 | 现存 | |||
unistr |
1 | unistr ( text ) → text |
— | |
| 解析参数中转义的 Unicode 字符。Unicode 字符可以被指定为\XXXX(4 个十六进制数字),\+XXXXXX(6 个十六进制数字),\uXXXX(4 个十六进制数字),或\UXXXXXXXX(8 个十六进制数字)。要指定反斜杠,请写入两个反斜杠。所有其他字符均按字面解释。 | 现存 | |||
upper基线 |
3 | upper ( text ) → text |
142 次 | |
| 根据数据库的区域设置规则,将字符串转换为全部大写。 | 现存 | |||