您的位置:寻梦网首页编程乐园数据库PostgreSQL 7.2 Documentation

4.4. 字符串函数和操作符

本节描述了用于检查和操作字符串数值的函数和操作符. 在这个环境中的字串包括所有类型 CHARACTER CHARACTER VARYING ,和 TEXT 的值.除非另外说明,所有下面列出的函数都可以处理这些类型, 不过要小心的是,在使用 CHARACTER 类型的时候, 它的自动填充的潜在影响.通常这里描述的函数也能用于非字串 类型,此时它首先把那些数据转化为字串表现形式. 有些函数还可以处理位串类型.

SQL 定义了一些字串函数, 它们有指定的语法,它们里面是用 某种特定的关键字,而不是逗号来分隔参数. 详情请见 Table 4-6 , 这些函数也用正常的函数调用说法实现了. (参阅 Table 4-7 .)

Table 4-6. SQL 字串函数和操作符

函数 返回类型 描述 例子 结果
string || string text 字串连接 'Postgre' || 'SQL' PostgreSQL
bit_length ( string ) integer 字串里二进制位的个数 bit_length('jose') 32
char_length ( string ) 或 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 从字串 string 的 开头/结尾/两边/ 删除只包含 characters (缺省是一个空白)的最长的字串. trim(both 'x' from 'xTomxx') Tom
upper ( string ) text 把字串转化为大写. upper('tom') TOM

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

Table 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 转换字串. 原来的编码是用 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 通过填充字符 fill (缺省时为空白), 把 string 填充为长度 length . 如果 string 已经比 length 长则将其截断(在右边). lpad('hi', 5, 'xy') xyxhi
ltrim ( string text , trim text ) text 从字串 string 的 开头 删除只包含 trim 的最长的字串. ltrim('zzzytrim','xyz') trim
pg_client_encoding () name 返回当前客户端编码名称. pg_client_encoding() SQL_ASCII
repeat ( text , integer ) text 重复 text 一定次数. repeat('Pg', 4) PgPgPgPg
rpad ( string text , length integer [ , fill text ]) text 通过填充字符 fill (缺省时为空白), 把 string 填充为长度 length . 如果 string 已经比 length 长则将其截断. rpad('hi', 5, 'xy') hixyx
rtrim ( string text, trim text) text 从字串 string 的 结尾 删除只包含 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,LATIN, WIN1250(CP1250)的转化.