VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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)