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类型。
  • 所有输入转换为所选类型,如果没有隐式转换则失败。
➡️

继续阅读