sql - PostgreSQL 在查询返回空的情况下将 NULL 作为一行返回

标签 sql postgresql rust

我有一个通用代码,它试图在查询返回后访问字段值。

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/

相关文章:

sql - 将 Oracle SQL Select 转换为 PostgreSQL Select

sql - BigQuery 计数不同的 ColX 不等于 ColX 的组计数

mysql - 如何自定义MySQL ORDER BY

sql - PostgreSQL:列出数据库用户有权连接

rust - 为什么没有发生借用重叠时会出现借用错误?

rust - 为 gstreamer crate 0.14 编写 rust/gstreamer 插件需要哪些依赖项?

MySQL GROUP BY 没有给出期望的结果

java - 为什么查询无法被识别?

python - 带有嵌入式命令的 os.system

rust - 使用git添加rust Cargo中的依赖项时是否可以使用路径