Sql server 将表格的空白转换为空

Sql server 将表格的空白转换为空,sql-server,sql-server-2008,Sql Server,Sql Server 2008,在我的表中,有几个列的值为空。有谁能建议我一个查询,通过它我可以将给定表的所有空格替换为NULL 编辑 很抱歉,如果我无法正确指定问题,我不想在查询中提供列名。我只有一个表名。因此,对于给定的表,我希望检查所有列,并将其空值转换为NULL。只需像这样使用UPDATE: UPDATE myTable SET myColumn = NULL WHERE myColumn = ''; 要删除表中的所有空白值,请执行以下操作: CREATE PROCEDURE getRidOfBlanks

在我的表中,有几个列的值为空。有谁能建议我一个查询,通过它我可以将给定表的所有空格替换为NULL

编辑


很抱歉,如果我无法正确指定问题,我不想在查询中提供列名。我只有一个表名。因此,对于给定的表,我希望检查所有列,并将其空值转换为NULL。

只需像这样使用
UPDATE

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

要删除表中的所有空白值,请执行以下操作:

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

要使用它,请使用我的代码创建过程,然后使用表名执行它。

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

 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'

如果列名中有空格,这里是@alex.b过程的修改

CREATE PROCEDURE up\u replacesblanksbynulls
@schemaName nvarchar(50),
@表名nvarchar(100)
作为
声明@query1 nvarchar(最大值)=”
选择@query1=@query1+'UPDATE'++@schemaName++'.++@tableName+'SET'+case当c.COLUMN_名称类似“%”时,然后选择“['+c.COLUMN_NAME+']”否则c.COLUMN_NAME end+'=NULL,其中'+
当c.COLUMN_NAME像“%”那么“['+c.COLUMN_NAME+]”或者c.COLUMN_NAME end+'=''”;”时的情况从信息_SCHEMA.c列
其中C.TABLE_NAME=@tableName
打印@query1
执行sp_executesql@query1
去

并且OP需要多列(“几列”)?@hims056抱歉我的问题不清楚,请检查编辑部分。我只有一个表名me@lagrandmere对不起,我的问题不清楚,请检查编辑部分。我只有一个表名me@TimSchmelter编辑我的答案以删除表中的所有空白值。很奇怪,但我在创建此SP时遇到此错误,必须声明表变量“@tableName”.@Zerotoinfinite您需要添加表名,而不是
@tableName
@hims056我想我需要硬编码表名。对我来说很好,但不能用于存储过程+我不为我工作。查询已成功执行。我已经用我的SQL表替换了我的TableName。我必须在这里更改任何其他内容吗?我没有收到任何错误,它正在成功执行,但表列没有使用NULL更新。当我运行第二个查询时,它总是重复此语句(受影响的1行)*。仍然没有修改任何行。表中有这么多空格:-(@Zerotoinfinite,几个问题:您的表所属的架构是什么?
隐式事务是关闭还是打开?@Zerotoinfinite,还有一个问题:
blank
value是否表示完全空字符串-“”,或者它可能包含空格或制表符,或者类似的smth?这是我的schema CREATE schema[工作表]的脚本)授权[dbo]