CONVERT
功能描述
CONVERT函数包含两种转换功能:
- 将值从一种数据类型转换成参数中指定的另一种数据类型。
- 将值从一个字符集转换成指定的字符集。
CONVERT函数支持拉丁语系字符的字符集转换功能,支持将拉丁语系字符转为GBK的字符集。该功能由参数enable_convert_illegal_chars控制,当该参数设置为on时,支持转换无法识别的字符。当编码为GBK时,会将不支持的字符转换为3F,即“?”。
注意事项
该功能仅在数据库兼容模式为MySQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='B')。
语法格式
CONVERT(expression,type);
参数说明
expression
待转换的表达式,无数据类型限制,但取决于转换的目标类型如果不能正常转换则返回0或NULL。
type
类型名称,可以是以下类型中的一种:
DATE
DATETIME
TIME
DECIMAL
CHAR
BINARY
INT
BIGINT
示例
示例1: 将值从一种数据类型转换成参数中指定的另一种数据类型。
SELECT convert('11.67',BIGINT);
返回结果为:
int8
------
12
(1 row)
示例2: 将值从一个字符集转换成指定的字符集。
SELECT convert('aaa',CHAR);
返回结果为:
bpchar
--------
aaa
(1 row)
示例3: 拉丁语系字符的字符集转换。
1、设置参数enable_convert_illegal_chars为on。
SET enable_convert_illegal_chars ON;
2、创建测试表并插入数据。
CREATE TABLE my_table_1173346(col1 int,col2 varchar(30),col3 varchar(30));
INSERT INTO my_table_1173346 VALUES(1,'张三','男');
INSERT INTO my_table_1173346 VALUES(1,'士土','男');
INSERT INTO my_table_1173346 VALUES(1,'Damian Pypeć','男');
3、调用convert函数。
SELECT col1,`col2` FROM my_table_1173346 ORDER BY convert(col2 using gbk) COLLATE gbk_chinese_ci;
返回结果为:
col1 | col2
------+--------------
1 | Damian Pypeć
1 | 士土
1 | 张三
(3 rows)