gpt4 book ai didi

rust - 将字符串替换为 "null"值作为真正的空值 rusqlite

转载 作者:行者123 更新时间:2023-12-02 18:21:30 34 4
gpt4 key购买 nike

我需要使用 rusqlite 将具有值 null 的字符串转换为 SQLite DB 中的实际 null 值。我无法控制这些字符串值。我找到了 Null 结构,但我不确定如何简洁地将其作为参数传递,然后在字符串值不为 null 时使用它。

sqlite.execute(
"INSERT INTO people (name) VALUES (?1)",
params![
if person.name == "null" { &Null } else { person.name }
],
).unwrap();

但我收到错误

`if` and `else` have incompatible types

expected `&rusqlite::types::Null`, found struct `std::string::String`rustc(E0308)

可以做这样的事情,但必须有更好的方法。

if person.name == "null" {
sqlite.execute(
"INSERT INTO people (name) VALUES (?1)",
params![
&Null
],
).unwrap();
} else {
sqlite.execute(
"INSERT INTO people (name) VALUES (?1)",
params![
person.name
],
).unwrap();
}

我只能想象在更现实的环境中,这样的事情会在多个值的情况下多快失控。是否有一些通用类型可以将字符串类型和 Null 结构转换为?完成插入后,我还可以进行 SQL 查询来替换所有这些值,但我宁愿第一次就做对。

最佳答案

我对rusqlite不太熟悉,但总的来说,Rust中“可能为空”的工具是Option,看一下rusqlite::ToSql确认有一个

impl<T: ToSql> ToSql for Option<T>

它可以满足你的要求。 (不幸的是,它没有记录在案,但点击“[src]”链接会显示其实现。)要使用它:

if person.name == "null" { None } else { Some(person.name) }

关于rust - 将字符串替换为 "null"值作为真正的空值 rusqlite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70818742/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com