GaussDB(DWS)函数不同写法引发的结果差异
💡
原文中文,约4200字,阅读约需10分钟。
📝
内容提要
本文介绍了在GaussDB(DWS)中使用mysql兼容模式下,表达式函数greatest因不同写法引发的结果差异案例。差异是由于入参类型不同导致的。建议在不确定返回类型时显式指定入参类型。文章还介绍了SQL UNION构造和不同兼容模式下的类型匹配规则。
🎯
关键要点
- GaussDB(DWS)支持多种兼容模式,不同模式之间存在行为差异。
- 在mysql兼容模式下,greatest函数因入参类型不同导致结果差异。
- 第一个SQL语句返回text类型,第二个SQL语句返回integer类型。
- 建议在不确定返回类型时显式指定入参类型。
- SQL UNION构造要求所有查询结果必须在一列里显示,元素类型必须匹配。
- 不同兼容模式下的类型匹配规则不同,以mysql兼容模式下的IFNULL为例进行说明。
- 规则包括:相同类型解析为相同类型、unknown类型解析为text类型、unknown与非unknown类型解析为非unknown类型等。
- 如果存在多种非unknown类型,enum类型当做text类型进行比较。
- 输入类型同一范畴选择优先级高的类型,不同范畴解析为text类型。
- 所有输入转换为所选类型,如果没有隐式转换则失败。
➡️