
# 流量控制函数
表1流量控制函数列表 
| MySQL数据库 | GaussDB数据库 | 差异                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| IF()     | 支持，存在差异    | - expr1入参仅支持bool类型。非bool类型入参若不能转换为bool类型则报错。  - 若expr2、expr3两个入参类型不同且两类型间不存在隐式转换函数则报错。  - 两个入参类型相同时，返回该入参类型。  - 若expr2、expr3两个入参类型分别为NUMERIC、STRING或TIME其中一个，GaussDB输出为TEXT类型，MySQL输出为VARCHAR类型。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| IFNULL() | 支持，存在差异    | - 若expr1、expr2两个入参类型不同且两类型间不存在隐式转换函数则报错。  - 两个入参类型相同时，返回该入参类型。  - 若expr1、expr2两个入参类型范畴分别为NUMERIC、STRING或TIME其中一个，GaussDB输出为TEXT类型，MySQL输出为VARCHAR类型。  - 两个入参类型中一个为FLOAT4类型，另一个为NUMERIC范畴中任一类型，返回值为DOUBLE类型。MySQL其中一入参为FLOAT4，另一入参为TINYINT、UNSIGNED TINYINT、SMALLINT、UNSIGNED SMALLINT、MEDIUMINT、UNSIGNED MEDIUMINT、BOOL任一类型时，返回FLOAT4类型，第一个入参为FLOAT4，第二个入参为BIGINT或UNSIGNED BIGINT时，返回FLOAT类型。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| NULLIF() | 支持，存在差异    | - GaussDB中NULLIF()类型推导遵从以下逻辑： - 如果两个参数的数据类型不同，且两个入参类型存在等值比较操作符，则返回对应等值操作符对应的左值类型，否则会对两个入参类型进行强制类型兼容。  - 若强制类型兼容后，存在等值比较操作符，则返回强制类型兼容后对应等值操作符的左值类型。  - 若强制类型兼容后，仍找不到对应等值操作符，则报错。 ``` --两个入参类型存在等值比较操作符 gaussdb=# SELECT pg_typeof(nullif(1::int2, 2::int8)); pg_typeof ----------- smallint (1 row) --两个入参类型不存在等值比较操作符，但在强制类型兼容后可以找到等值比较操作符 gaussdb=# SELECT pg_typeof(nullif(1::int1, 2::int2)); pg_typeof ----------- bigint (1 row) --两个入参类型不存在等值比较操作符，且强制类型兼容后也不存在等值比较操作符 gaussdb=# SELECT nullif(1::bit, '1'::MONEY); ERROR:  operator does not exist: bit = money LINE 1: SELECT nullif(1::bit, '1'::MONEY); ^ HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts. CONTEXT:  referenced column: nullif ```     - MySQL输出类型仅与第一个入参类型有关： - 第一个入参为tinyint、smallint、mediumint、int、bool时，输出为int类型。  - 第一个入参为bigint时，输出为bigint类型。  - 第一个入参为unsigned tinyint、unsigned smallint、unsigned mediumint、unsigned int、bit时，输出为unsigned int类型。  - 第一个入参为unsigned bigint时，输出为unsigned bigint。  - 第一个入参为浮点型即float、double、real时，输出为double类型。  - 第一个入参类型为decimal或numeric类型时，输出为decimal类型。  - 第一个入参类型为时间类型或字符串类型即date、time、date、datetime、timestamp、char、varchar以及tinytext、enum、set时，输出为varchar类型。  - 第一个入参类型为text、mediumtext、longtext时，输出为longtext类型。  - 第一个入参类型为tinyblob时，输出为varbinary类型。  - 第一个入参类型为mediumblob或longblob时，输出为longblob类型。  - 第一个入参为blob时，输出为blob类型。     |
| ISNULL() | 支持，存在差异    | GaussDB中返回值为BOOLEAN类型的t或f，MySQL中返回值为INT类型的1或0。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   
