有没有办法在表格的每一列中运行它:
UPDATE dbo.stage_a
SET Statement_Name= NULL
WHERE Statement_Name='""';
我想在数据导入后整理一下。
答案 0 :(得分:1)
Dynamic query
加Information_schema.columns
。试试这个。
DECLARE @cols NVARCHAR(max)='UPDATE dbo.stage_a set '
SELECT @cols += COLUMN_NAME + '=case when ' + COLUMN_NAME
+ ' = '""' then null else '+COLUMN_NAME+' end,'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'stage_a'
AND TABLE_SCHEMA = 'dbo'
SELECT @cols = LEFT(@cols, Len(@cols) - 1)
PRINT @cols
EXEC Sp_executesql @cols
答案 1 :(得分:0)
UPDATE Customers
SET ContactName='Alfred Schmidt', City='Hamburg'
WHERE CustomerName='Alfreds Futterkiste';
与此示例一样,您应指定所有列。(以逗号分隔)
如果要用NULL替换所有列,为什么不删除行:
DELETE FROM Customers
WHERE CustomerName='Alfreds Futterkiste'
答案 2 :(得分:0)
您需要先使用INFORMATION_SCHEMA.COLUMNS
DECLARE @tableName varchar(10)
SET @tableName = 'mm'
DECLARE @sql VARCHAR(MAX)
SET @sql = ''
SELECT @sql = @sql + 'UPDATE ' + @tableName + ' SET ' + c.name + ' = NULL WHERE ' + c.name + '= ''';'
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id = t.object_id
INNER JOIN sys.types y ON c.system_type_id = y.system_type_id
WHERE t.name = @tableName AND y.name IN ('varchar', 'nvarchar', 'char', 'nchar')
EXEC (@sql)
未经测试的查询可能需要根据您的需要进行调整