咨询SQL表达式sum( (record_id is NULL AND joined.table_id is NULL)::int )的含义
SQL表达式相关问题解答
问题1:
(record_id is NULL AND joined.table_id is NULL)表达式的返回值是什么?
这个表达式返回布尔值:当record_id和joined.table_id同时为NULL时,返回TRUE;只要其中一个不为NULL,返回FALSE;如果其中某个字段状态未知(比如来自未关联成功的左连接),会返回UNKNOWN,但多数计算或比较场景里UNKNOWN会被当作NULL处理。问题2:该表达式能否与
(.. + ..)这类表达式进行比较?
取决于具体的SQL数据库方言:- 比如在PostgreSQL中,布尔值会被隐式转换为整数(
TRUE对应1,FALSE对应0),可以直接和数值运算表达式(比如a + b)做比较; - 但在标准SQL或者部分严格类型的数据库中,布尔类型和数值类型属于不同类型,不能直接比较,必须显式转换类型后再操作。
- 比如在PostgreSQL中,布尔值会被隐式转换为整数(
问题3:
()::int是否用于将结果转换为整数?
是的,()::int是PostgreSQL等SQL方言中的类型转换语法,专门用来把括号内表达式的计算结果转换为整数类型。你抽样测试得到整数值,就是因为这个转换把布尔值(TRUE/FALSE)转成了对应的1/0。
内容的提问来源于stack exchange,提问作者Vitaly Litvinov
相关产品推荐
相关产品推荐

