我想更新我的表,使每个具有NULL值的列更新为空字符串。如何将所有空值为NULL的列更新为空字符串?
目前我有以下查询,但它只会更新一列,我想更新所有NULL为空字符串的列。
UPDATE table SET column1='' WHERE column1 IS NULL
我想更新我的表,使每个具有NULL值的列更新为空字符串。如何将所有空值为NULL的列更新为空字符串?
目前我有以下查询,但它只会更新一列,我想更新所有NULL为空字符串的列。
UPDATE table SET column1='' WHERE column1 IS NULL
你可以做这样的事情更新一个语句多列:
UPDATE table SET column1='', column2='', column3='' WHERE column1 IS NULL
无论其thsi将只更新基于WHERE子句。
对于你想要做的事情,你需要单独的陈述。
UPDATE table SET column1='' WHERE column1 IS NULL
UPDATE table SET column2='' WHERE column2 IS NULL
UPDATE table SET column3='' WHERE column3 IS NULL
编辑试试这个:
UPDATE table SET column1= IfNull(column1,''), column2= IfNull(column2,'') , column3= IfNull(column3,'')
不能动态地创建标准SQL的声明。如果没有编程语言的外部帮助,您需要为每列重复使用此语句。
您需要指定要更改的列。所以,如果你的表有四列,你需要这样的多个查询:
UPDATE table SET column1 = '' WHERE column1 IS NULL;
UPDATE table SET column2 = '' WHERE column2 IS NULL;
UPDATE table SET column3 = '' WHERE column3 IS NULL;
UPDATE table SET column4 = '' WHERE column4 IS NULL;
它变得更容易一些,如果你只是想所有列设置为提供的只是其中的一列是NULL一个空字符串,但这可能不是你想要什么:
UPDATE table SET column1 = '', column2 = '', column3 = '', column4 = ''
WHERE (column1 IS NULL
OR column2 IS NULL
OR column3 IS NULL
OR column4 IS NULL);
您可以更新一列本身并检查空那里......
UPDATE table SET
column1 = ISNULL(column1,''),
column2 = ISNULL(column2,''),
column3 = ISNULL(column3,'')
等。
不需要WHERE子句,因为您希望它在所有记录上运行。
这意味着你知道每个列的名称,我认为OP正在寻找一种方法来自动执行它。 –
其实你可以做这样的事情
DECLARE @sql varchar(max)=''
select @sql= @sql+''+ c.name + '= CASE WHEN ' +c.name+'=''''THEN NULL ELSE ' +c.name+' end,
'
from sys.tables t
JOIN sys.columns c
ON t.object_id = c.object_id
WHERE t.object_id = 1045578763 -- Your object_id table
PRINT 'UPDATE <TABLE>
SET '[email protected]
是的,这就是为什么我给了他两个选择。 –
我想每个人都有同样的解决方案...我希望有更多的“自动”的东西,但这个多个查询交易可能是唯一的方式有点臭... – Jona
@MOTO:什么“有点臭”是需要设置所有NULL列都是空字符串,因为前端可能不能很好地处理NULL。 – Tim