空白转换为NULL表(Convert blank to NULL for a table)

2019-09-22 03:40发布

在我的表我有,它们是具有空值几列。 任何人都可以给我建议的查询通过,我可以取代所有空格为NULL给定的表?

编辑

我很抱歉,如果我不能正确地指定我的问题,我不希望我的查询给列名。 我只有表名。 因此,对于一个给定的表我要检查所有的列和转换其空白值设置为NULL。

Answer 1:

作为一种方法下一存储过程可以帮助:

 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'


Answer 2:

为了摆脱表中的所有空值:

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

要使用此功能,您创建过程与我的代码,那么你与你的表名执行它。



Answer 3:

只需用UPDATE这样的:

UPDATE myTable SET myColumn = NULL WHERE myColumn = '';


Answer 4:

如果你的列名在他们的空间,这里是@ 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


文章来源: Convert blank to NULL for a table