gpt4 book ai didi

sqlite - 将NULL转换为默认值

转载 作者:行者123 更新时间:2023-12-03 14:45:15 25 4
gpt4 key购买 nike

我有一个旧的数据库,我想稍作更新。

旧的数据库没有像代码那样处理(差)的DEFAULT或NOT NULL之类的列约束。对于新数据库,我在需要的地方添加了这些约束,因此我可以删除客户端代码并让sqlite处理。

现在,问题出在过渡上,其中愉快地传输了NULL值,或者在NOT NULL约束的情况下引发了错误。

所以我的问题是:如何将值从一个表转移到另一个表,并将所有NULL值更改为新列的默认值?

目前,这是我的(Python)代码:

    self.cursor.execute("CREATE TEMP TABLE tmp_%s AS SELECT * FROM %s" % (table, table))
self.cursor.execute("DROP TABLE %s" % table)
self.cursor.execute("CREATE TABLE IF NOT EXISTS %s (%s)" % (table, get_columns(table)))
self.cursor.execute("INSERT INTO %s SELECT * FROM tmp_%s" % (table, table))
self.cursor.execute("DROP TABLE tmp_%s" % table)


该数据库有很多表,因此它是一个帮助函数,该函数根据给定的表名创建sql。

最佳答案

您有几种选择。您可以运行更新:

update table set null_column = default_value where null_column is null


或者,您可以选择列出这些列并使用合并。

select not_null_column, coalesce(null_column, default_value) from table


在插入之前,只能获取非null值。

关于sqlite - 将NULL转换为默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934487/

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