PostgreSQL中将表名用作行值的用法在哪有官方文档记录?
理解PostgreSQL中
SELECT * FROM table WHERE NOT (table IS NOT NULL);的语法 SELECT * FROM table WHERE NOT (table IS NOT NULL);
这条语句用于查找table表中任意列包含null值的所有行,它的逻辑已经明确,但需要深入理解背后的语法细节:
- 有技术回答提到,对表(或表别名)的引用指向当前的现有行。
- PostgreSQL官方
SELECT文档的WHERE部分明确说明:当实际行值替换所有变量引用后返回true时,该行满足条件(原文自带着重标记)。
我曾以“row values”为关键词在PostgreSQL官网搜索,结果指向值表达式相关页面,但并未找到针对该语法的直接解释(也可能是我阅读时有所遗漏)。
更新
经Laurenz Albe提示,这条语句在后台实际使用了ROW行构造器,以下两种写法功能完全等价:
CHECK (NOT (a,b,c,d,e,f,g) IS NULL)
和
CHECK (NOT ROW(a,b,c,d,e,f,g) IS NULL)
但遗憾的是,PostgreSQL官方的行构造器文档及相关参考页面均未提及这种省略ROW关键字的用法,推测该用法更多是开发者之间口口相传的技巧(也可能是我自身阅读理解能力有待提升,遗漏了相关说明)。
内容的提问来源于stack exchange,提问作者toraritte
相关产品推荐
相关产品推荐

