我尝试了以下方法:
select 'update dbo.tableName set ' + sys.columns + ' = null where ' + sys.columns + ' = 'NULL'' from dbo.tableName
我将大量 excel 数据导入到 ssms 中,空值实际上是 varchars。
基本上,如果您'NULL'
在同一个表的多个不同行中有多个列作为字符串文字,那么最好是这样的:
UPDATE TableName
SET Col1 = NULLIF(Col1, 'NULL'),
Col2 = NULLIF(Col2, 'NULL'),
Col3 = NULLIF(Col3, 'NULL')
WHERE 'NULL' IN(Col1, Col2, Col3)
如果它的两个参数相同,则该NULLIF
函数将返回,NULL
否则返回第一个参数。
如果要对多个表动态执行此操作,可以执行以下操作:
DECLARE @SQL nvarchar(max) = '';
SELECT @SQL += 'UPDATE '+ TABLE_NAME + -- Update clause
STUFF( -- Set clause start
(
SELECT ',' + COLUMN_NAME + '= NULLIF('+ COLUMN_NAME +', ''NULL'')'
FROM Information_schema.Columns C
WHERE C.TABLE_NAME = T.TABLE_NAME
FOR XML PATH('')
), 1, 1, ' SET ') + -- Set clause end
' WHERE ''NULL'' IN(' + -- Where clause start
STUFF(
(
SELECT ','+ COLUMN_NAME
FROM Information_schema.Columns C
WHERE C.TABLE_NAME = T.TABLE_NAME
FOR XML PATH('')
),1, 1, '')+ ');' -- Where clause end
FROM Information_schema.Tables T;
EXEC(@SQL);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句