我想编写一个查询,可以将任何给定表上的所有值更新为此--
鉴于我在多个表中有许多列,该函数必须是通用的,这意味着我可以在不指定列名的情况下运行它,因为它只是为了识别 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
是表示数据库中缺失值的最佳方式。
(当然,您需要为您关心的每一列执行上述操作。