我在 PostgreSQL、AlaSQL 和其他一些 RDBMS 中尝试过:
SELECT 1 AS one, 1 * 2 AS two; -- works
SELECT 1 AS one, one * 2 AS two; -- doesn't
看来他们不支持。
编辑:
正如@juergen d在评论中提到的:
您可以在 MySQL 中执行此操作:https://stackoverflow.com/a/18020948/575376
上面的示例显示了不同 RDBMS 之间的差异。这就是我问这个问题的原因。
如果 ISO SQL 不能保证这种行为,那么我会尽力避免它。 不幸的是,似乎有些人觉得这是一个无用的问题(可能确实如此,但这对我来说很重要,因为我想尽可能编写可移植的代码)。
所以我想知道这是否是一个ISO SQL行为。
如果提供具体参考材料的链接,我们将不胜感激。
我并不是要求提供描述不存在的功能的文档。如果有人挑剔,也许我应该重新表述一下这个问题:ISO SQL 是否指定SELECT
是整体执行,还是可以部分执行?
尝试了解特定 SQL 语法是否符合 ISO 并不是一项简单的任务,首先该标准有多个版本(最新版本是 2023 年:https ://www.iso.org/search.html?q= 9075)那么您想要兼容哪个版本?
ISO 文档也不是免费的 - 上面的链接显示了大约 16 个部分,每个部分的成本约为 200 瑞士法郎 - 因此要获得全套文档将花费大量金钱,而且即使如此,它们也是技术性很强的文档,因此机会大多数人正确理解标准如何实施的比例很低。
因此,除非您正在构建 DBMS,否则大多数人并不担心 ISO 兼容性。保持 SQL 简单且结构良好是其可移植性的最佳保证 - 即使它符合 ISO 标准,您也无法保证您的目标 DBMS 与 ISO 标准(您选择的版本)兼容 - 因此符合 ISO 标准并不等于便携