You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rust SQLx中更简洁获取单列String结果(无需包装结构体)?

无需包装结构体获取SQLx单列String的简洁方法

可以直接使用SQLx提供的query_scalar方法,它专门用于处理单列查询结果,无需定义包装结构体或手动迭代映射:

pub async fn page(
    Extension(pool): Extension<PgPool>,
    ...
) -> PageTemplate {
    // 直接获取单列String集合
    let foos: Vec<String> = sqlx::query_scalar(r#"SELECT foo FROM bar GROUP BY foo"#)
        .fetch_all(&pool)
        .await
        .unwrap();
    
    // 后续业务逻辑...
}

补充说明

  • query_scalar会自动将查询返回的单列数据映射为指定类型(这里是String),只要目标类型实现了sqlx::Type trait,而String对PostgreSQL等主流数据库是默认支持的。
  • 如果需要流式处理大量数据,避免一次性加载全部到内存,可以用fetch方法配合迭代:
    let mut rows = sqlx::query_scalar(r#"SELECT foo FROM bar GROUP BY foo"#)
        .fetch(&pool);
    
    while let Some(foo) = rows.next().await.unwrap() {
        // 逐个处理每个String值
    }
    

内容的提问来源于stack exchange,提问作者fadedbee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 16:22:05