Sql server 将表格的空白转换为空
在我的表中,有几个列的值为空。有谁能建议我一个查询,通过它我可以将给定表的所有空格替换为NULL 编辑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。只需像这样使用
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]