
# 系统函数兼容性概述
GaussDB数据库兼容绝大多数MySQL的系统函数，但存在部分差异。
当前存在原GaussDB的系统函数和MySQL系统函数同名，但是M-Compatibility兼容模式下尚未支持这些函数的情况；一部分未支持的同名函数会提示用户在M-Compatibility兼容模式下不支持，另外一部分同名函数仍然保持原GaussDB系统函数的行为。同名函数会与MySQL的行为产生较大差异，因此建议用户尽量避免使用这些同名函数，只使用M-Compatibility兼容模式下的系统函数。
具体同名函数列表如下：
表1M-Compatibility兼容模式下提示不支持的同名函数 
|      cot       |    isEmpty    | last_insert_id |     mod      | octet_length |
|---|---|---|---|---|
| overlaps       | point         | radians        | regexp_instr | regexp_like  |
| regexp_replace | regexp_substr | stddev_pop     | stddev_samp  | var_pop      |
| var_samp       | variance      | -              | -            | -            |
   
表2M-Compatibility兼容模式下保持原GaussDB系统函数行为的同名函数 
|   ceil   | decode | encode | format  | instr |
|---|---|---|---|---|
| position | round  | stddev | row_num | -     |
   
![](https://support.huaweicloud.com/distributed-compatibility-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- MySQL数据库支持通过可加载函数接口，向MySQL中添加自定义函数，在调用此类函数时，函数的入参支持指定别名。GaussDB不支持可加载函数接口，在调用函数时，函数入参不支持指定别名。
- M-Compatibility模式下，系统函数存在以下公共差异：
  - 系统函数的返回值类型仅考虑入参node类型为Var（表中数据）和Const（常量输入）类型时的情况与MySQL保持一致，其他情况（如入参为运算表达式、函数表达式等）可能返回值的类型与MySQL有差异。
  
  - 当聚合函数以其他函数、操作符或SELECT子句等表达式作为入参时（如SELECT sum(abs(n)) FROM t;），聚合函数将获取不到入参表达式传递的精度信息，导致函数的结果精度与MySQL有差异。
  
  - 系统函数的调用不推荐使用pg_catalog.func_name()形式的调用，当被调用函数存在语法形式的入参时（如SELECT substr('demo' from 1 for 2)），函数的调用可能存在错误。
   
 
