sql字符串函数和操作符

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

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

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

函数返回类型描述例子结果
string || stringtext字串连接'Post' || 'greSQL'PostgreSQL
bit_length(string)integer字串里二进制位的个数bit_length('jose')32
char_length(string)character_length(string)integer字串中的字符个数char_length('jose')4
convert(string using conversion_name)text使用指定的转换名字改变编码。转换可以通过 CREATE CONVERSION 定义。当然系统里有一些预定义的转换名字。参阅 Table 9-8 获取可用的转换名。convert('PostgreSQL'
 using
iso_8859_1_to_utf_8)
Unicode (UTF-8) 编码的'PostgreSQL'
lower(string)text把字串转化为小写lower('TOM')tom
octet_length(string)integer字串中的字节数octet_length('jose')4
position(substring in string)integer声明的子字串的位置position('om' in 'Thomas')3
overlay(string placing string from integer [for integer])text替换子字串overlay('Txxxxas' placing 'hom' from 2 for 4)Thomas
position(substring in string)integer指定的子字串的位置position('om' in 'Thomas')3
substring(string [from integer] [for integer])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

还有额外的字串操作函数可以用,它们在Table 9-7列出。 它们有些在内部用于实现Table 9-6
列出的SQL标准字串函数。

Table 9-7. 其他字串函数

函数返回类型描述例子结果
ascii(text)integer参数第一
个字符的 ASCII
ascii('x')120
btrim
(string text, characters text)
textstring
开头和结尾删除 只包含在 characters 里的字符的最长字串。
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
decode(string text, type text)bytea把早先用encode编码的,存放在 string 里面的二进制数据解码。 参数类型和encode一样。decode('MTIzAAE=',
 'base64')
123\000\001
encode(data bytea, type text)text把二进制数据编码为只包含 ASCII 形式的数据。 支持的类型有base64hexescapeencode('123\\000
\\001', 'base64')
MTIzAAE=
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, characters text)text从字串 string 的 开头 删除只包含 characters 的最长的字串。ltrim
('zzzytrim','xyz')
trim
md5(string text)text计算给出字串的 MD5 散列,以十六进制返回结果。md5('abc')90015098
3cd24
fb0d69
63f7d2
8e17f72
pg_client_encoding()name当前客户端编码名称。pg_client_
encoding()
SQL_ASCII
quote_ident(string text)text返回给出字串的一个适用于在SQL语句字串里当作标识符引起使用的形式。只有在必要的时候才会添加引号(也就是说,如果字串包含非标识符字符或者会 转换大小写的字符)。 嵌入的引号被恰当地写了双份。quote_ident('Foo')"Foo"
quote_literal(string text)text返回给出字串的一个适用于在SQL语句字串里当作文本使用的形式。 嵌入的引号和反斜杠被恰当地写了双份。quote_literal
('O\'Reilly')
'O''Reilly'
repeat(text, integer)text重复 text 一定次数。repeat('Pg', 4)PgPgPgPg
replace(string text, from text, to text)text把字串string里出现地所有子字串 from 替换成子字串 toreplace
('abcdefabcdef',
 'cd', 'XX')
abXXef
abXXef
rpad(string text, length integer [, fill text])text通过填充字符 fill (缺省时为空白), 把 string 填充为长度 length。 如果 string 已经比 length 长则将其截断。rpad('hi', 5, 'xy')hixyx
rtrim(string
text, character text)
text从字串 string 的 结尾
删除只包含 character 的最长的字串。
rtrim
('trimxxxx','x')
trim
split_part
(string text, delimiter text, field integer)
text根据 delimiter 分隔 string 返回生成的第 field 个子字串(一为基)。split_part
('abc~@~def
~@~ghi','~@~',2
)
def
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 [a]to_ascii('Karel')Karel
to_hex(number integer 或者 bigint)textnumber 转换成其对应地十六进制表现形式。to_hex(922337203
6854775807)
7fffffff
ffffffff
translate(string text, from text, to text)text把在 string 中包含的任何匹配 from 中的字符的字符转化为对应的 在 to 中的字符。translate('12345',
 '14', 'ax')
a23x5
Notes:
a. to_ascii 函数只支持从 LATIN1LATIN2,和 WIN1250 转换。

来自:http://blog.sina.com.cn/s/blog_59cb8a9301009w0a.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值