更新时间:2024-11-11 GMT+08:00

强制转换函数

表1 强制转换函数列表

序号

MySQL数据库

GaussDB数据库

差异

1

CAST()

支持

  • GaussDB不支持使用CAST(expr AS CHAR[(N)] charset_info或者CAST(expr AS NCHAR[(N)])转换字符集。
  • GaussDB支持使用CAST(expr AS FLOAT[(p)])或CAST(expr AS DOUBLE)将表达式转换为浮点类型,MySQL 5.7版本不支持此转换。
  • GaussDB不支持使用CAST(expr AS JSON)将表达式转换为JSON。
  • 对于CAST嵌套子查询场景,如果子查询语句返回的是FLOAT类型,GaussDB返回的是准确的数值,MySQL 5.7版本返回失真数值,BINARY函数使用CAST实现,同理。
    --GaussDB
    m_db=# CREATE TABLE sub_query_table (myfloat float) DISTRIBUTE BY REPLICATION;
    CREATE TABLE
    m_db=# INSERT INTO sub_query_table (myfloat) VALUES (1.23);
    INSERT 0 1
    m_db=# SELECT BINARY (select MyFloat from sub_query_table ) from sub_query_table;
     binary 
    --------
     1.23
    (1 row)
    m_db=# SELECT CAST((select MyFloat from sub_query_table ) AS char);
     cast 
    ------
     1.23
    (1 row)
    --Mysql 5.7
    mysql> CREATE TABLE sub_query_table (myfloat float);
    Query OK, 0 rows affected (0.02 sec)
    mysql> INSERT INTO sub_query_table (myfloat) VALUES (1.23);
    Query OK, 1 row affected (0.00 sec)
    mysql> SELECT BINARY (select MyFloat from sub_query_table ) from sub_query_table;
    +-----------------------------------------------+
    | BINARY (select MyFloat from sub_query_table ) |
    +-----------------------------------------------+
    | 1.2300000190734863                            |
    +-----------------------------------------------+
    1 row in set (0.00 sec)
    mysql> SELECT CAST((select MyFloat from sub_query_table ) AS char);
    +------------------------------------------------------+
    | CAST((select MyFloat from sub_query_table ) AS char) |
    +------------------------------------------------------+
    | 1.2300000190734863                                   |
    +------------------------------------------------------+
    1 row in set (0.00 sec)

2

CONVERT()

支持

  • GaussDB不支持使用CONVERT(expr, CHAR[(N)] charset_info或者CAST(expr, NCHAR[(N)])转换字符集。
  • GaussDB支持使用CONVERT(expr, FLOAT[(p)])或CONVERT(expr, DOUBLE)将表达式转换为浮点类型,MySQL 5.7版本不支持此转换。
  • GaussDB不支持使用CONVERT(expr, JSON)将表达式转换为JSON。