转换字符串
upper(string)
描述:把字符串转化为大写。
返回值类型:varchar
示例:
1 2 3 4 5 |
SELECT upper('database'); upper ---------- DATABASE (1 row) |
ucase(string)
描述:把字符串转化为大写。
返回值类型:varchar
示例:
SELECT ucase('database');
ucase
----------
DATABASE
(1 row)
lower(string)
描述:把字符串转化为小写。
返回值类型:varchar
示例:
1 2 3 4 5 |
SELECT lower('DATABASE'); lower ---------- database (1 row) |
lcase(string)
描述:把字符串转化为小写。
返回值类型:varchar
示例:
SELECT lcase('DATABASE');
lcase
----------
database
(1 row)
initcap(string)
描述:将字符串中的每个单词的首字母转化为大写,其他字母转化为小写。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT initcap('hi THOMAS'); initcap ----------- Hi Thomas (1 row) |
quote_ident(string text)
描述:返回适用于SQL语句的标识符形式(使用适当的引号进行界定)。只有在必要的时候才会添加引号(字符串包含非标识符字符或者会转换大小写的字符)。返回值中嵌入的引号都写了两次。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT quote_ident('hello world'); quote_ident -------------- "hello world" (1 row) |
quote_literal(string text)
描述:返回适用于在SQL语句里当作文本使用的形式(使用适当的引号进行界定)。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT quote_literal('hello'); quote_literal --------------- 'hello' (1 row) |
如果出现如下写法,text文本将进行转义。
1 2 3 4 5 |
SELECT quote_literal(E'O\'hello'); quote_literal --------------- 'O''hello' (1 row) |
如果出现如下写法,反斜杠会写入两次。
1 2 3 4 5 |
SELECT quote_literal('O\hello'); quote_literal --------------- E'O\\hello' (1 row) |
如果参数为NULL,返回空。如果参数可能为null,通常使用函数quote_nullable更适用。
1 2 3 4 5 |
SELECT quote_literal(NULL); quote_literal --------------- (1 row) |
quote_literal(value anyelement)
描述:将给定的值强制转换为text,加上引号作为文本。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT quote_literal(42.5); quote_literal --------------- '42.5' (1 row) |
如果出现如下写法,定值将进行转义。
1 2 3 4 5 |
SELECT quote_literal(E'O\'42.5'); quote_literal --------------- 'O''42.5' (1 row) |
如果出现如下写法,反斜杠会写入两次。
1 2 3 4 5 |
SELECT quote_literal('O\42.5'); quote_literal --------------- E'O\\42.5' (1 row) |
quote_nullable(string text)
描述:返回适用于在SQL语句里当作字符串使用的形式(使用适当的引号进行界定)。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT quote_nullable('hello'); quote_nullable ---------------- 'hello' (1 row) |
如果出现如下写法,text文本将进行转义。
1 2 3 4 5 |
SELECT quote_nullable(E'O\'hello'); quote_nullable ---------------- 'O''hello' (1 row) |
如果出现如下写法,反斜杠会写入两次。
1 2 3 4 5 |
SELECT quote_nullable('O\hello'); quote_nullable ---------------- E'O\\hello' (1 row) |
如果参数为NULL,返回NULL。
1 2 3 4 5 |
SELECT quote_nullable(NULL); quote_nullable ---------------- NULL (1 row) |
quote_nullable(value anyelement)
描述:将给定的参数值转化为text,加上引号作为文本。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT quote_nullable(42.5); quote_nullable ---------------- '42.5' (1 row) |
如果出现如下写法,定值将进行转义。
1 2 3 4 5 |
SELECT quote_nullable(E'O\'42.5'); quote_nullable ---------------- 'O''42.5' (1 row) |
如果出现如下写法,反斜杠会写入两次。
1 2 3 4 5 |
SELECT quote_nullable('O\42.5'); quote_nullable ---------------- E'O\\42.5' (1 row) |
如果参数为NULL,返回NULL。
1 2 3 4 5 |
SELECT quote_nullable(NULL); quote_nullable ---------------- NULL (1 row) |
BIN(n bigint)
描述:将bigint类型从十进制转换成二进制,并以字符串的形式返回结果值。若参数含有NULL值,则返回NULL。
返回值类型:text
1 2 3 4 5 |
SELECT BIN(16) as result; result -------- 10000 (1 row) |
HEX(n)
描述:n可以是int类型也可以是字符串。返回n的十六进制字符串。若参数含有NULL值,返回NULL。
返回值类型:text
示例:
1 2 3 4 5 6 7 8 9 10 |
SELECT HEX(255) as result; result -------- FF (1 row) SELECT HEX('abc') as result; result -------- 616263 (1 row) |
UNHEX(n)
描述:执行HEX(n)的反向操作,n可以是int类型也可以是字符串,将参数中的每一对十六进制数字理解为一个数字,并将其转化为该数字代表的字符。若参数含有NULL值,返回NULL。该函数仅8.2.0及以上集群版本支持。
返回值类型:bytea
示例:
1 2 3 4 5 |
SELECT UNHEX('abc') as result; result -------- \x0abc (1 row) |
reverse(str)
描述:返回倒序排列的字符串。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT reverse('abcde'); reverse --------- edcba (1 row) |
to_hex(number int or bigint)
描述:将数字转换成十六进制的表现形式。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT to_hex(2147483647); to_hex ---------- 7fffffff (1 row) |
translate(string text, from text, to text)
描述:根据from和to参数定义的字符映射关系,将原字符串中的每个字符替换为目标字符。如果from比to长,删掉在from中出现的额外的字符。
参数说明:
- string:要处理的原字符串。
- from:指定要替换的字符。
- to:指定替换后的字符。
返回值类型:text
示例:
根据from参数(143)和to参数(ax)的映射关系将原字符“12345”中的1替换为a,4替换为x, 3无对应替换字符所以删除。返回替换后的结果“a2x5”。
1 2 3 4 5 |
SELECT translate('12345', '143', 'ax'); translate ----------- a2x5 (1 row) |
ascii(string)
描述:返回字符串中第一个字符的ASCII码。
返回值类型:integer
示例:
返回字符串“xyz”中第一个字符“x”的ASCII码。
1 2 3 4 5 |
SELECT ascii('xyz'); ascii ------- 120 (1 row) |
convert(string bytea, src_encoding name, dest_encoding name)
描述:以dest_encoding指定的目标编码方式转化字符串bytea。src_encoding指定源编码方式,在该编码下,string必须是合法的。
返回值类型:bytea
示例:
1 2 3 4 5 |
SELECT convert('text_in_utf8', 'UTF8', 'GBK'); convert ---------------------------- \x746578745f696e5f75746638 (1 row) |
如果源编码格式到目标编码格式的转化规则不存在,则字符串不进行任何转换直接返回,如GBK和LATIN1之间的转换规则是不存在的,具体转换规则可以通过查看系统表pg_conversion获得。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
show server_encoding; server_encoding ----------------- LATIN1 (1 row) SELECT convert_from('some text', 'GBK'); convert_from -------------- some text (1 row) db_latin1=# SELECT convert_to('some text', 'GBK'); convert_to ---------------------- \x736f6d652074657874 (1 row) db_latin1=# SELECT convert('some text', 'GBK', 'LATIN1'); convert ---------------------- \x736f6d652074657874 (1 row) |
convert_from(string bytea, src_encoding name)
描述:以数据库的编码方式转化字符串bytea。
src_encoding指定源编码方式,在该编码下,string必须是合法的。
返回值类型:text
示例:
1 2 3 4 5 6 7 8 9 10 |
SELECT convert_from('text_in_utf8', 'UTF8'); convert_from -------------- text_in_utf8 (1 row) SELECT convert_from('\x6461746162617365','gbk'); convert_from -------------- database (1 row) |
convert_to(string text, dest_encoding name)
描述:将字符串转化为dest_encoding的编码格式。
返回值类型:bytea
示例:
1 2 3 4 5 6 7 8 9 10 |
SELECT convert_to('some text', 'UTF8'); convert_to ---------------------- \x736f6d652074657874 (1 row) SELECT convert_to('database', 'gbk'); convert_to -------------------- \x6461746162617365 (1 row) |
chr(integer)
描述:将整数转换为对应的ASCII码的字符。
返回值类型:varchar
示例:
1 2 3 4 5 |
SELECT chr(65); chr ----- A (1 row) |
format(formatstr text [, str"any" [, ...] ])
描述:格式化字符串。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT format('Hello %s, %1$s', 'World'); format -------------------- Hello World, World (1 row) |
md5(string)
描述:将字符串使用MD5加密,并以16进制数作为返回值。
MD5的安全性较低,不建议使用。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT md5('data'); md5 ---------------------------------- 8d777f385d3dfec8815d20f7496026dc (1 row) |
decode(string text, format text)
描述:将二进制数据从文本数据中解码。
返回值类型:bytea
示例:
1 2 3 4 5 6 7 8 9 10 11 |
SELECT decode('ZGF0YWJhc2U=', 'base64'); decode -------------- \x6461746162617365 (1 row) SELECT convert_from('\x6461746162617365','utf-8'); convert_from -------------- database (1 row) |
encode(data bytea, format text)
描述:将二进制数据编码为文本数据。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT encode('database', 'base64'); encode ---------- ZGF0YWJhc2U= (1 row) |
CONV(n, fromBase, toBase)
描述: 将给定的数值或者字符串转换成目标进制,并按照字符串的形式输出结果。若参数含有NULL值,返回NULL。进制表示范围为[-36, -2]&[2, 36]。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT CONV(-1, 10, 16) as result; result ------------------ FFFFFFFFFFFFFFFF (1 row) |