【发布时间】:2020-08-27 18:11:26
【问题描述】:
在简单的场景中:
SELECT (1,2) = (1,NULL)
-- NULL
比较时:
SELECT ((1,2),1) = ((1,CAST(NULL AS INT)),1)
-- NULL MariaDB/MySQL
-- False PostgreSQL
SELECT ((1,2),CAST(NULL AS INT)) = ((1,CAST(NULL AS INT)),1)
-- NULL MariaDB/MySQL
-- False PostgreSQL
来自 PostgreSQL 文档:
= 和 情况与其他情况略有不同。如果两行的所有对应成员都不为空且相等,则认为两行相等; 如果任何对应的成员不为空且不相等,则行不相等;否则行比较的结果是未知的(null)。
PostgreSQL 是否以不同的方式处理“嵌套”记录/行类型?根据 SQL 标准(MariaDB/PostgreSQL/两者),哪个结果是正确的?
【问题讨论】:
-
性能:直到最近,MySQL/MariaDB 在行构造函数方面做得很差。
标签: mysql postgresql mariadb