在我的表我有,它们是具有空值几列。 任何人都可以给我建议的查询通过,我可以取代所有空格为NULL给定的表?
编辑
我很抱歉,如果我不能正确地指定我的问题,我不希望我的查询给列名。 我只有表名。 因此,对于一个给定的表我要检查所有的列和转换其空白值设置为NULL。
在我的表我有,它们是具有空值几列。 任何人都可以给我建议的查询通过,我可以取代所有空格为NULL给定的表?
编辑
我很抱歉,如果我不能正确地指定我的问题,我不希望我的查询给列名。 我只有表名。 因此,对于一个给定的表我要检查所有的列和转换其空白值设置为NULL。
作为一种方法下一存储过程可以帮助:
CREATE PROCEDURE up_replaceBlanksByNulls
@schemaName nvarchar(50),
@tableName nvarchar(100)
AS
declare @query1 nvarchar(max) = ''
select @query1 = @query1 + 'UPDATE ' + @schemaName + '.' + @tableName + ' SET ' + c.COLUMN_NAME + ' = NULL WHERE ' +
c.COLUMN_NAME + ' = '''';' FROM INFORMATION_SCHEMA.COLUMNS c
WHERE C.TABLE_NAME = @tableName
EXECUTE sp_executesql @query1
GO
用法:
up_replaceBlanksByNulls 'dbo', 'myTable'
为了摆脱表中的所有空值:
CREATE PROCEDURE getRidOfBlanks
@tableName nvarchar(50)
AS
DECLARE @colName varchar(50)
DECLARE Table_Cursor CURSOR FOR
select COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='@tableName'
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @colName
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tableName SET @colName = NULL WHERE @colName = '';
FETCH NEXT FROM Table_Cursor INTO @colName
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
GO
要使用此功能,您创建过程与我的代码,那么你与你的表名执行它。
只需用UPDATE
这样的:
UPDATE myTable SET myColumn = NULL WHERE myColumn = '';
如果你的列名在他们的空间,这里是@ alex.b程序的改变。
CREATE PROCEDURE up_replaceBlanksByNulls
@schemaName nvarchar(50),
@tableName nvarchar(100)
AS
declare @query1 nvarchar(max) = ''
select @query1 = @query1 + 'UPDATE ' + @schemaName + '.' + @tableName + ' SET ' + case when c.COLUMN_NAME like '% %' then '[' + c.COLUMN_NAME + ']' Else c.COLUMN_NAME end + ' = NULL WHERE ' +
case when c.COLUMN_NAME like '% %' then '[' + c.COLUMN_NAME + ']' Else c.COLUMN_NAME end + ' = '''';' FROM INFORMATION_SCHEMA.COLUMNS c
WHERE C.TABLE_NAME = @tableName
print @query1
EXECUTE sp_executesql @query1
GO