
# 转换字符串
#### upper(string)
描述：把字符串转化为大写。
返回值类型：varchar
示例：
```
SELECT upper('database');
  upper
----------
 DATABASE
(1 row)
```
#### ucase(string)
描述：把字符串转化为大写。
返回值类型：varchar
示例：
```
SELECT ucase('database');
  ucase
----------
 DATABASE
(1 row)
```
#### lower(string)
描述：把字符串转化为小写。
返回值类型：varchar
示例：
```
SELECT lower('DATABASE');
  lower
----------
 database
(1 row)
```
#### lcase(string)
描述：把字符串转化为小写。
返回值类型：varchar
示例：
```
SELECT lcase('DATABASE');
  lcase
----------
 database
(1 row)
```
#### initcap(string)
描述：将字符串中的每个单词的首字母转化为大写，其他字母转化为小写。
返回值类型：text
示例：
```
SELECT initcap('hi THOMAS');
  initcap
-----------
 Hi Thomas
(1 row)
```
#### quote_ident(string text)
描述：返回适用于SQL语句的标识符形式（使用适当的引号进行界定）。只有在必要的时候才会添加引号（字符串包含非标识符字符或者会转换大小写的字符）。返回值中嵌入的引号都写了两次。
返回值类型：text
示例：
```
SELECT quote_ident('hello world');
 quote_ident
--------------
 "hello world"
(1 row)
```
#### quote_literal(string text)
描述：返回适用于在SQL语句里当作文本使用的形式（使用适当的引号进行界定）。
返回值类型：text
示例：
```
SELECT quote_literal('hello');
 quote_literal 
---------------
 'hello'
(1 row)
```
如果出现如下写法，text文本将进行转义。
```
SELECT quote_literal(E'O\'hello');
 quote_literal
---------------
 'O''hello'
(1 row)
```
如果出现如下写法，反斜杠会写入两次。
```
SELECT quote_literal('O\hello');
 quote_literal 
---------------
 E'O\\hello'
(1 row)
```
如果参数为NULL，返回空。如果参数可能为null，通常使用函数quote_nullable更适用。
```
SELECT quote_literal(NULL);
 quote_literal 
---------------
(1 row)
```
#### quote_literal(value anyelement)
描述：将给定的值强制转换为text，加上引号作为文本。
返回值类型：text
示例：
```
SELECT quote_literal(42.5);
 quote_literal 
---------------
 '42.5'
(1 row)
```
如果出现如下写法，定值将进行转义。
```
SELECT quote_literal(E'O\'42.5');
 quote_literal
---------------
 'O''42.5'
(1 row)
```
如果出现如下写法，反斜杠会写入两次。
```
SELECT quote_literal('O\42.5');
 quote_literal 
---------------
 E'O\\42.5'
(1 row)
```
#### quote_nullable(string text)
描述：返回适用于在SQL语句里当作字符串使用的形式（使用适当的引号进行界定）。
返回值类型：text
示例：
```
SELECT quote_nullable('hello');
 quote_nullable 
----------------
 'hello'
(1 row)
```
如果出现如下写法，text文本将进行转义。
```
SELECT quote_nullable(E'O\'hello');
 quote_nullable
----------------
 'O''hello'
(1 row)
```
如果出现如下写法，反斜杠会写入两次。
```
SELECT quote_nullable('O\hello');
 quote_nullable
----------------
 E'O\\hello'
(1 row)
```
如果参数为NULL，返回NULL。
```
SELECT quote_nullable(NULL);
 quote_nullable
----------------
 NULL
(1 row)
```
#### quote_nullable(value anyelement)
描述：将给定的参数值转化为text，加上引号作为文本。
返回值类型：text
示例：
```
SELECT quote_nullable(42.5);
 quote_nullable
----------------
 '42.5'
(1 row)
```
如果出现如下写法，定值将进行转义。
```
SELECT quote_nullable(E'O\'42.5');
 quote_nullable 
----------------
 'O''42.5'
(1 row)
```
如果出现如下写法，反斜杠会写入两次。
```
SELECT quote_nullable('O\42.5');
 quote_nullable
----------------
 E'O\\42.5'
(1 row)
```
如果参数为NULL，返回NULL。
```
SELECT quote_nullable(NULL);
 quote_nullable
----------------
 NULL
(1 row)
```
#### BIN(n bigint)
描述：将bigint类型从十进制转换成二进制，并以字符串的形式返回结果值。若参数含有NULL值，则返回NULL。
返回值类型：text
示例：
```
SELECT BIN(16) as result;
 result
--------
 10000
(1 row)
```
#### HEX(n)
描述：n可以是int类型也可以是字符串。返回n的十六进制字符串。若参数含有NULL值，返回NULL。
返回值类型：text
示例：
```
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
示例：
```
SELECT UNHEX('abc') as result;
 result
--------
 \x0abc
(1 row)
```
#### reverse(str)
描述：返回倒序排列的字符串。
返回值类型：text
示例：
```
SELECT reverse('abcde');
 reverse
---------
 edcba
(1 row)
```
#### to_hex(number int or bigint)
描述：将数字转换成十六进制的表现形式。
返回值类型：text
示例：
```
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"。
```
SELECT translate('12345', '143', 'ax');
 translate
-----------
 a2x5
(1 row)
```
#### ascii(string)
描述：返回字符串中第一个字符的ASCII码。
返回值类型：integer
示例：
返回字符串"xyz"中第一个字符"x"的ASCII码。
```
SELECT ascii('xyz');
 ascii 
-------
   120
(1 row)
```
#### convert(string bytea, src_encoding name, dest_encoding name)
描述：以dest_encoding指定的目标编码方式转化字符串bytea。src_encoding指定源编码方式，在该编码下，string必须是合法的。
返回值类型：bytea
示例：
```
SELECT convert('text_in_utf8', 'UTF8', 'GBK');
          convert        
----------------------------
 \x746578745f696e5f75746638
(1 row)
```
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
如果源编码格式到目标编码格式的转化规则不存在，则字符串不进行任何转换直接返回，如GBK和LATIN1之间的转换规则是不存在的，具体转换规则可以通过查看系统表pg_conversion获得。
示例：
```
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
示例：
```
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
示例：
```
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
示例：
```
SELECT chr(65);
 chr
-----
 A
(1 row)
```
#### format(formatstr text \[, str"any" \[, ...\] \])
描述：格式化字符串。
返回值类型：text
示例：
```
SELECT format('Hello %s, %1$s', 'World');
       format       
--------------------
 Hello World, World
(1 row)
```
#### md5(string)
描述：将字符串使用MD5加密，并以16进制数作为返回值。
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
MD5的安全性较低，不建议使用。
返回值类型：text
示例：
```
SELECT md5('data');
               md5
----------------------------------
 8d777f385d3dfec8815d20f7496026dc
(1 row)
```
#### decode(string text, format text)
描述：将二进制数据从文本数据中解码。
返回值类型：bytea
示例：
```
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
示例：
```
SELECT encode('database', 'base64');
  encode  
----------
 ZGF0YWJhc2U=
(1 row)
```
#### CONV(n, fromBase, toBase)
描述： 将给定的数值或者字符串转换成目标进制，并按照字符串的形式输出结果。若参数含有NULL值，返回NULL。进制表示范围为\[-36, -2\]\&\[2, 36\]。
返回值类型：text
示例：
```
SELECT CONV(-1, 10, 16) as result;
      result
------------------
 FFFFFFFFFFFFFFFF
(1 row)
```
