我有一张表,并且在几个列中都有空白值,散布在整个地方。
我想替换''用NULL。
最快的方法是什么?有没有我不知道的伎俩?
答案 0 :(得分:2)
update <table name> set
<column 1> = case when <column 1> = '' then null else <column 1> end,
<column 2> = case when <column 2> = '' then null else <column 2> end
您可以添加尽可能多的行。不需要where子句(除非你有大量的数据 - 那么你可能想要添加一个where子句,将其限制为在你检查的每个列中都有空值的行)
答案 1 :(得分:1)
如果你有很多专栏并且你不想手动编写SQL,你可以使用Information_Schema.Columns
视图为你生成SQL ...
DECLARE @Table AS Varchar(100)
SET @Table = 'Your Table'
SELECT 'UPDATE ' + @Table + ' SET ' + QUOTENAME(Column_Name)
+ ' = NULL WHERE ' + QUOTENAME(Column_Name) + ' = '''''
FROM Information_Schema.Columns
WHERE Table_Name = @Table
AND Data_Type IN ( 'varchar', 'nvarchar' )
然后只需复制结果集并在新的查询窗口中运行...
答案 2 :(得分:0)
我是这样做的:
DECLARE @ColumnNumber INT
DECLARE @FullColumnName VARCHAR(50)
DECLARE @SQL NVARCHAR(500)
SET @ColumnNumber = 0
WHILE (@ColumnNumber <= 30)
BEGIN
SET @FullColumnName = 'Column' + CAST(@ColumnNumber AS VARCHAR(10))
SET @SQL = 'UPDATE [].[].[] SET ' + @FullColumnName + ' = NULL WHERE ' + @FullColumnName + ' = '''''
EXECUTE sp_executesql
@SQL;
SET @ColumnNumber = @ColumnNumber + 1
END