字符串函数和操作符#

本节描述了用于检查和操作字符串数值的函数和操作符。 在这个环境中的字符串包括character,character varying, text类型的值。除非另外说明,所有下面列出的函数都可以处理这些类型, 不过要小心的是,在使用character类型的时候,需要注意自动填充的潜在影响。 有些函数还可以处理位串类型。

SQL定义了一些字符串函数,用特定的关键字而不是逗号来分隔参数。 详情请见下表。这些函数也可以使用正常的函数调用语法实施(见表其他字符串函数)。

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

函数

返回类型

描述

例子

结果

string || string

text

字符串连接

‘Oushu’ || ‘DB’

OushuDB

bit_length(string)

int

字符串的位

bit_length(‘jose’)

32

char_length(string) or character_length(string)

int

字符串的字符个数

char_length(‘jose’)

4

lower(string)

text

把字符串转化为小写

lower(‘TOM’)

tom

octet_length(string)

int

字符串中的字节数

octet_length(‘jose’)

4

overlay(string placing string from int [for int])

text

替换子字符串

overlay(‘Txxxxas’ placing ‘hom’ from 2 for 4)

Thomas

position(substring in string)

int

指定子字符串的位置

position(‘om’ in ‘Thomas’)

3

substring(string [from int][for int])

text

截取子字符串

substring(‘Thomas’ from 2 for 3)

hom

substring(string from pattern)

text

截取匹配POSIX正则表达式的子字符串。

substring(‘Thomas’ from ‘…$’)

mas

substring(string from pattern for escape)

text

截取匹配SQL正则表达式的子字符串。

substring(‘Thomas’ from ‘%#”o_a#”_’ for ‘#’)

oma

trim([leading | trailing | both][characters] from string)

text

从字符串string的开头/结尾/两边删除只包含 characters中字符 (缺省是空白)的最长的字符串

trim(both ‘x’ from ‘xTomxx’)

Tom

upper(string)

text

把字符串转化为大写

upper(‘tom’)

TOM

还有额外的操作函数可以用,在下表中列出。它们有些在内部用于实现上表列出的SQL标准字符串函数。

表.其他字符串函数

函数

返回类型

描述

例子

结果

ascii(string)

int

参数中第一个字符的ASCII编码值。

ascii(‘x’)

120

btrim(string text [, characters text])

text

从string开头和结尾删除只包含 characters中字符(缺省是空白)的最长字符串。

btrim(‘xyxtrimyyx’, ‘xy’)

trim

chr(int)

text

给定的ASCII码对应的字符

chr(65)

A

convert(string text, [src_encoding name,] dest_encoding name)

text

将字符串转化为dest_encoding编码格式。最初的编码格式由src_encoding声明。如果src_encoding被省略,数据库编码会被假定。

convert( ‘text_in_utf8’, ‘UTF8’, ‘LATIN1’)

以ISO 8859-1编码表示的 text_in_utf8

encode(data bytea, type text)

text

把二进制数据编码为文本表示。支持的格式有:base64, hex, escape。escape 转换零字节和高位设置字节为八进制序列(nnn) 和双反斜杠。

encode( E’123\\000\\001’, ‘base64’)

MTIzAAE=

initcap(string)

text

把每个单词的第一个字母转为大写,其它的保留小写。 单词是一系列字母数字组成的字符,用非字母数字分隔。

initcap(‘hi THOMAS’)

Hi Thomas

length(string)

int

string中字符的数目

length(‘jose’)

4

lpad(string text, length int [, fill text])

text

通过填充字符fill(缺省时为空白), 把string填充为length长度。 如果string已经比length长则将其尾部截断。

lpad(‘hi’, 5, ‘xy’)

xyxhi

ltrim(string text [, characters text])

text

从字符串string的开头删除只包含characters 中字符(缺省是一个空白)的最长的字符串。

ltrim(‘zzzytrim’, ‘xyz’)

trim

md5(string)

text

计算string的MD5散列,以十六进制返回结果。

md5(‘abc’)

900150983cd24fb0d6963f7d28e17f72

pg_client_encoding()

name

当前客户端编码名称

pg_client_encoding()

UTF8

quote_ident(string)

text

返回适用于SQL语句的标识符形式(使用适当的引号进行界定)。 只有在必要的时候才会添加引号(字符串包含非标识符字符或者会转换大小写的字符)。 嵌入的引号被恰当地写了双份。

quote_ident(‘Foo bar’)

“Foo bar”

quote_literal(string)

text

返回适用于在SQL语句里当作文本使用的形式(使用适当的引号进行界定)。 嵌入的引号和反斜杠被恰当地写了双份。

quote_literal( E’O\’Reilly’)

‘O’’Reilly’

regexp_replace(string text, pattern text, replacement text [,flags text])

text

用POSIX正则表达式作为分隔符,分隔string。

regexp_replace(‘Thomas’, ‘.[mN]a.’, ‘M’)

ThM

repeat(string text, number int)

text

将string重复number次

repeat(‘Pg’, 4)

PgPgPgPg

replace(string text, from text, to text)

text

把字符串string里出现地所有子字符串from 替换成子字符串to

replace( ‘abcdefabcdef’, ‘cd’, ‘XX’)

abXXefabXXef

rpad(string text, length int [, fill text])

text

使用填充字符fill(缺省时为空白), 把string填充到length长度。 如果string已经比length长则将其从尾部截断。

rpad(‘hi’, 5, ‘xy’)

hixyx

rtrim(string text [, characters text])

text

从字符串string的结尾删除只包含 characters中字符(缺省是个空白)的最长的字符串。

rtrim(‘trimxxxx’, ‘x’)

trim

split_part(string text, delimiter text, field int)

text

根据delimiter分隔string 返回生成的第 field 个子字符串(1为基)。

split_part(‘abc~@~def~@~ghi’, ‘~@~’, 2)

def

strpos(string, substring)

int

指定的子字符串的位置。和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_hex(number int or bigint)

text

把number转换成十六进制表现形式

to_hex(2147483647)

7fffffff

translate(string text, from text, to text)

text

把在string中包含的任何匹配from 中字符的字符转化为对应的在to中的字符。

translate(‘12345’, ‘14’, ‘ax’)

a23x5

转换名

源编码

目的编码

ascii_to_mic

SQL_ASCII

MULE_INTERNAL

ascii_to_utf8

SQL_ASCII

UTF8

big5_to_euc_tw

BIG5

EUC_TW

big5_to_mic

BIG5

MULE_INTERNAL

big5_to_utf8

BIG5

UTF8

euc_cn_to_mic

EUC_CN

MULE_INTERNAL

euc_cn_to_utf8

EUC_CN

UTF8

euc_jp_to_mic

EUC_JP

MULE_INTERNAL

euc_jp_to_sjis

EUC_JP

SJIS

euc_jp_to_utf8

EUC_JP

UTF8

euc_kr_to_mic

EUC_KR

MULE_INTERNAL

euc_kr_to_utf8

EUC_KR

UTF8

euc_tw_to_big5

EUC_TW

BIG5

euc_tw_to_mic

EUC_TW

MULE_INTERNAL

euc_tw_to_utf8

EUC_TW

UTF8

gb18030_to_utf8

GB18030

UTF8

gbk_to_utf8

GBK

UTF8

iso_8859_10_to_utf8

LATIN6

UTF8

iso_8859_13_to_utf8

LATIN7

UTF8

iso_8859_14_to_utf8

LATIN8

UTF8

iso_8859_15_to_utf8

LATIN9

UTF8

iso_8859_16_to_utf8

LATIN10

UTF8

iso_8859_1_to_mic

LATIN1

MULE_INTERNAL

iso_8859_1_to_utf8

LATIN1

UTF8

iso_8859_2_to_mic

LATIN2

MULE_INTERNAL

iso_8859_2_to_utf8

LATIN2

UTF8

iso_8859_2_to_windows_1250

LATIN2

WIN1250

iso_8859_3_to_mic

LATIN3

MULE_INTERNAL

iso_8859_3_to_utf8

LATIN3

UTF8

iso_8859_4_to_mic

LATIN4

MULE_INTERNAL

iso_8859_4_to_utf8

LATIN4

UTF8

iso_8859_5_to_koi8_r

ISO_8859_5

KOI8

iso_8859_5_to_mic

ISO_8859_5

MULE_INTERNAL

iso_8859_5_to_utf8

ISO_8859_5

UTF8

iso_8859_5_to_windows_1251

ISO_8859_5

WIN1251

iso_8859_5_to_windows_866

ISO_8859_5

WIN866

iso_8859_6_to_utf8

ISO_8859_6

UTF8

iso_8859_7_to_utf8

ISO_8859_7

UTF8

iso_8859_8_to_utf8

ISO_8859_8

UTF8

iso_8859_9_to_utf8

LATIN5

UTF8

johab_to_utf8

JOHAB

UTF8

koi8_r_to_iso_8859_5

KOI8

ISO_8859_5

koi8_r_to_mic

KOI8

MULE_INTERNAL

koi8_r_to_utf8

KOI8

UTF8

koi8_r_to_windows_1251

KOI8

WIN1251

koi8_r_to_windows_866

KOI8

WIN866

mic_to_ascii

MULE_INTERNAL

SQL_ASCII

mic_to_big5

MULE_INTERNAL

BIG5

mic_to_euc_cn

MULE_INTERNAL

EUC_CN

mic_to_euc_jp

MULE_INTERNAL

EUC_JP

mic_to_euc_kr

MULE_INTERNAL

EUC_KR

mic_to_euc_tw

MULE_INTERNAL

EUC_TW

mic_to_iso_8859_1

MULE_INTERNAL

LATIN1

mic_to_iso_8859_2

MULE_INTERNAL

LATIN2

mic_to_iso_8859_3

MULE_INTERNAL

LATIN3

mic_to_iso_8859_4

MULE_INTERNAL

LATIN4

mic_to_iso_8859_5

MULE_INTERNAL

ISO_8859_5

mic_to_koi8_r

MULE_INTERNAL

KOI8

mic_to_sjis

MULE_INTERNAL

SJIS

mic_to_windows_1250

MULE_INTERNAL

WIN1250

mic_to_windows_1251

MULE_INTERNAL

WIN1251

mic_to_windows_866

MULE_INTERNAL

WIN866

sjis_to_euc_jp

SJIS

EUC_JP

sjis_to_mic

SJIS

MULE_INTERNAL

sjis_to_utf8

SJIS

UTF8

tcvn_to_utf8

WIN1258

UTF8

uhc_to_utf8

UHC

UTF8

utf8_to_ascii

UTF8

SQL_ASCII

utf8_to_big5

UTF8

BIG5

utf8_to_euc_cn

UTF8

EUC_CN

utf8_to_euc_jp

UTF8

EUC_JP

utf8_to_euc_kr

UTF8

EUC_KR

utf8_to_euc_tw

UTF8

EUC_TW

utf8_to_gb18030

UTF8

GB18030

utf8_to_gbk

UTF8

GBK

utf8_to_iso_8859_1

UTF8

LATIN1

utf8_to_iso_8859_10

UTF8

LATIN6

utf8_to_iso_8859_13

UTF8

LATIN7

utf8_to_iso_8859_14

UTF8

LATIN8

utf8_to_iso_8859_15

UTF8

LATIN9

utf8_to_iso_8859_16

UTF8

LATIN10

utf8_to_iso_8859_2

UTF8

LATIN2

utf8_to_iso_8859_3

UTF8

LATIN3

utf8_to_iso_8859_4

UTF8

LATIN4

utf8_to_iso_8859_5

UTF8

ISO_8859_5

utf8_to_iso_8859_6

UTF8

ISO_8859_6

utf8_to_iso_8859_7

UTF8

ISO_8859_7

utf8_to_iso_8859_8

UTF8

ISO_8859_8

utf8_to_iso_8859_9

UTF8

LATIN5

utf8_to_johab

UTF8

JOHAB

utf8_to_koi8_r

UTF8

KOI8

utf8_to_sjis

UTF8

SJIS

utf8_to_tcvn

UTF8

WIN1258

utf8_to_uhc

UTF8

UHC

utf8_to_windows_1250

UTF8

WIN1250

utf8_to_windows_1251

UTF8

WIN1251

utf8_to_windows_1252

UTF8

WIN1252

utf8_to_windows_1253

UTF8

WIN1253

utf8_to_windows_1254

UTF8

WIN1254

utf8_to_windows_1255

UTF8

WIN1255

utf8_to_windows_1256

UTF8

WIN1256

utf8_to_windows_1257

UTF8

WIN1257

utf8_to_windows_866

UTF8

WIN866

utf8_to_windows_874

UTF8

WIN874

windows_1250_to_iso_8859_2

WIN1250

LATIN2

windows_1250_to_mic

WIN1250

MULE_INTERNAL

windows_1250_to_utf8

WIN1250

UTF8

windows_1251_to_iso_8859_5

WIN1251

ISO_8859_5

windows_1251_to_koi8_r

WIN1251

KOI8

windows_1251_to_mic

WIN1251

MULE_INTERNAL

windows_1251_to_utf8

WIN1251

UTF8

windows_1251_to_windows_866

WIN1251

WIN866

windows_1252_to_utf8

WIN1252

UTF8

windows_1256_to_utf8

WIN1256

UTF8

windows_866_to_iso_8859_5

WIN866

ISO_8859_5

windows_866_to_koi8_r

WIN866

KOI8

windows_866_to_mic

WIN866

MULE_INTERNAL

windows_866_to_utf8

WIN866

UTF8

windows_866_to_windows_1251

WIN866

WIN

windows_874_to_utf8

WIN874

UTF8*