C# 如何在sql server中删除整列中的一个单词?

C# 如何在sql server中删除整列中的一个单词?,c#,.net,sql-server,C#,.net,Sql Server,我只是用一个excel文件填充了我的数据库,在检查了它之后,我发现在很多列中都有一个错误 我在网上查到,在多行中插入单元格是Excel的一个缺陷。因此,现在x000D这个词出现在许多列中 如何在整个数据库中使用sql查询删除它?您可以执行以下操作: update MyTable -- <<=== Your table name set myColumn = null -- <<=== Your column name where myColumn='x000D' 此查询

我只是用一个excel文件填充了我的数据库,在检查了它之后,我发现在很多列中都有一个错误

我在网上查到,在多行中插入单元格是Excel的一个缺陷。因此,现在x000D这个词出现在许多列中

如何在整个数据库中使用sql查询删除它?

您可以执行以下操作:

update MyTable -- <<=== Your table name
set myColumn = null -- <<=== Your column name
where myColumn='x000D'

此查询将清除设置为x000D的所有行中myColumn的值x000D。

如果要在所有数据库上执行此操作,必须创建一个循环过程

INFORMATION_SCHEMA.COLUMNS视图,它将为您提供数据库的所有列及其表。例如,您可以检查不需要更新整型列的列的数据类型

然后使用动态sql,构建一个类似于循环中的查询

UPDATE <MYTABLE> SET <MYCOLUMN> = REPLACE(<MYCOLUMN>, 'x000D', '')
并执行它

编辑

更快、不太干净,无需存储过程,您可以在SQL Server Management studio中键入:

SELECT 'UPDATE ' 
+ c.TABLE_NAME 
+ ' SET ' 
+ c.COLUMN_NAME 
+ ' =REPLACE(' + c.COLUMN_NAME + ', ''x000D'', '''');'
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.DATA_TYPE = 'nvarchar' // or IN (<the types you wanna correct>)

复制结果并执行,就完成了。

使用正确的xls可以更容易地中继和重新加载表