0

在我的表中,我有几列具有空白值。任何人都可以建议我一个查询,通过它我可以将给定表的所有空白替换为 NULL 吗?

编辑

如果我无法正确指定我的问题,我很抱歉,我不想在我的查询中给出列名。我只有表名。因此,对于给定的表,我想检查所有列并将它们的空白值转换为 NULL。

4

4 回答 4

3

作为一种方法,下一个存储过程可能会有所帮助:

 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'
于 2012-09-05T09:49:18.193 回答
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

要使用它,您可以使用我的代码创建您的过程,然后使用您的 tableName 执行它。

于 2012-09-05T09:28:17.390 回答
1

像这样简单地使用UPDATE

UPDATE myTable SET myColumn = NULL WHERE myColumn = '';
于 2012-09-05T09:26:41.370 回答
1

如果您的列名中有空格,这是@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
于 2019-04-16T15:54:53.220 回答