t自动替换 SQL Server 中一组特定表的空值



我想编写一个查询,可以将任何给定表上的所有值更新为此--鉴于我在多个表中有许多列,该函数必须是通用的,这意味着我可以在不指定列名的情况下运行它,因为它只是为了识别 null 值并使用我的值更新它们--我不确定完成此操作并将其包装到函数中的最佳方法当有人插入任何受影响的表时,我可以调用。

我已经将COALESE视为一种可能的选择,但任何示例都将不胜感激。

我的表看起来像:(我有超过 30 个表,其中包含 100+ 个字段,所以单独写出每个字段的更新听起来像是一场噩梦,一定有更好的方法(

ID  Name    Email           Phone
1   John    john@aol.com    234-234-2344
2   Mary    mary@test.com   332-134-5424
3   Simon   null            null
4   Kevin   null            345-453-2135
5   Kelly   kelly@msn.com   null

我想用我的表中永久--替换所有nulls,可能使用UPDATE语句。

任何想法都值得赞赏。

以下SQL将帮助您列出所有表和列名。你可以围绕这个结果集构建一个动态的 SQL 来实现你想要的。

SELECT DISTINCT
--SCHEMA_NAME(schema_id) AS schema_name,
t.name AS TableName,
c.name AS ColumnName
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
ORDER BY 1,2;

编辑

否则,以下链接可以解决您的问题。

SQL Server 查找和替换所有表和所有文本列中的值

嗯,你真的把这复杂化了。 相反,我会建议:

alter table t
alter column phone not null default '--';

在执行此操作之前,请更新列,以便没有NULL值:

update t
set phone = '--'
where phone is null;

而且,我应该说我认为这是一个坏主意。 您将"数据"与"表示"混淆了。 在应用程序中,您希望显示NULL值的--。 但我认为NULL是表示数据库中缺失值的最佳方式。

(当然,您需要为您关心的每一列执行上述操作。

最新更新