我有一个通用代码,它试图在查询返回后访问字段值。
SELECT
ROUND(AVG(EXTRACT(EPOCH FROM (time::timestamp)))) as extended_time
FROM log_info
WHERE
id = 1 AND
code = 200;
但是,这会将 NULL 值作为单行返回,这会导致我的应用程序崩溃。
for row in &con.query(query, args.as_slice()).unwrap() {
let extended_time: i32 = row.get("extended_time");
...
}
崩溃并出现以下错误:-
error retrieving column "extended_time": Conversion(WasNull)
手动运行返回
extended_time
-------------
(1 row)
没有 AVG
查询返回预期结果
SELECT
EXTRACT(EPOCH FROM (time::timestamp)) as extended_time
FROM log_info
WHERE
id = 1 AND
code = 200;
extended_time
-------------
(0 rows)
最佳答案
i32
不能为空。你应该使用 Option
因为您的查询可以返回 NULL
:
let extended_time: Option<i32> = row.get("extended_time");
关于sql - PostgreSQL 在查询返回空的情况下将 NULL 作为一行返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57087912/