# 强制转换函数
表1强制转换函数列表 
| 函数名        | 与MySQL的差异                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|
| 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版本不支持此转换。  - 使用CAST(expr AS FLOAT\[(p)\])函数时，若参数p满足0 ≤ p \< 24，函数返回值类型为FLOAT，但该函数在CREATE TABLE/VIEW \[AS\] SELECT语句中使用时，最终创建的表/视图对应字段类型会变为DOUBLE，此行为与MySQL 8.0版本存在不一致。  - 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) ```   - 当使用CAST(expr as CHAR\[(p)\])时，MySQL支持指定字符集，GaussDB 不支持。 ``` -- GaussDB m_db=# SELECT CAST('hello' AS CHAR CHARACTER SET utf8); ERROR:  syntax error at or near "CHARACTER" LINE 1: SELECT CAST('hello' AS CHAR CHARACTER SET utf8); ^ -- Mysql 5.7 mysql> SELECT CAST('hello' AS CHAR CHARACTER SET utf8); +------------------------------------------+ | CAST('hello' AS CHAR CHARACTER SET utf8) | +------------------------------------------+ | hello                                    | +------------------------------------------+ 1 row in set (0.00 sec) ```   - 当使用CAST(expr as CHAR\[(p)\])，返回结果为非法字符时，MySQL 5.7及GaussDB直接返回非法字符，MySQL 8.0在宽松模式下返回截断后的字段串，严格模式下返回NULL。   |
| CONVERT() | - GaussDB不支持使用CONVERT(expr, CHAR\[(N)\] charset_info或者CAST(expr, NCHAR\[(N)\])转换字符集。  - GaussDB支持使用CONVERT(expr, FLOAT\[(p)\])或CONVERT(expr, DOUBLE)将表达式转换为浮点类型，MySQL 5.7版本不支持此转换。  - 使用CONVERT(expr, FLOAT\[(p)\])函数时，若参数p满足0 ≤ p \< 24，函数返回值类型为FLOAT，但该函数在CREATE TABLE/VIEW \[AS\] SELECT语句中使用时，最终创建的表/视图对应字段类型会变为DOUBLE，此行为与MySQL 8.0版本存在不一致。    - GaussDB不支持使用CONVERT(expr, JSON)将表达式转换为JSON。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   
