更新时间:2025-11-19 GMT+08:00
分享

转换字符串

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)

相关文档