我正在从实际表中创建一个临时表。现在在实际表中的Rewrite_Count列显示为空。我需要将这些null替换为0。有人可以帮助我获取正确的代码。
SELECT *
INTO policy.Fact_Monthly_Policy_Snap_20190403
FROM Policy.Fact_Monthly_Policy_Snap;
答案 0 :(得分:2)
您基本上可以更新列的值:
def set_db():
db = pymysql.connect(host='localhost',
user="root",
passwd="root",
db="DATABASE")
return db
def execute_sql(cnx, sql_clause, fetch_all):
if sql_clause and sql_clause is not None:
try:
cnx.execute(sql_clause)
except Exception as e:
print("Error in sql: " + sql_clause + str(e))
return 0
pass
if fetch_all:
result = cnx.fetchall()
else:
result = cnx.fetchone()
return result
else:
print("Empty sql.")
return 0
db = set_db()
cnx = db.cursor()
sql = "SELECT * FROM TABLE"
result = execute_sql(cnx, sql, 1)
cnx.close() #close the cursor
#db.close #do not close the db connection
以上解决方案假定Rewrite_Count列为整数类型。
答案 1 :(得分:1)
尝试一下
update policy.Fact_Monthly_Policy_Snap_20190403
set Rewrite_Count = IsNull(Rewrite_Count,0)
where Rewrite_Count is null
答案 2 :(得分:1)
使用ISNULL()
SELECT ISNULL(Rewrite_Count, 0) Rewrite_Count, --Other columns
INTO policy.Fact_Monthly_Policy_Snap_20190403
FROM Policy.Fact_Monthly_Policy_Snap;
答案 3 :(得分:0)
在Default
的{{1}}字段中添加Rewrite_Count
。这样,如果有人将记录添加到表中,但未为Monthly_Policy_Snap
指定值,则系统会将其设置为0。
您可以使用Monthly_Policy_Snap
详细了解Alter Table ... Alter Column
约束here。
答案 4 :(得分:0)
注意Select into语句仅复制某些属性,例如列名,数据类型,但最重要的是它不包括约束,触发器等。
您可以使用coalcece和isnull替换为0。coalcece是标准的,isnull是特定于tsql的。如果源列不为null,则结点和isull都将结果列的属性设置为not null。但是,如果源列为null,则null会将结果列设置为非null。