我只是用一个 excel 文件填充了我的数据库,在检查它之后,我发现在许多列中都有一个错误。
我在互联网上查看,在多行中插入单元格时,这是 Excel 的一个错误。所以现在“ x000D ”这个词出现在许多列中。
我如何在整个数据库中使用 sql 查询将其删除?
我只是用一个 excel 文件填充了我的数据库,在检查它之后,我发现在许多列中都有一个错误。
我在互联网上查看,在多行中插入单元格时,这是 Excel 的一个错误。所以现在“ x000D ”这个词出现在许多列中。
我如何在整个数据库中使用 sql 查询将其删除?
如果您想在所有数据库上执行此操作,则必须创建一个循环遍历的过程
INFORMATION_SCHEMA.COLUMNS
视图,它将为您提供数据库的所有列(及其表)。您可以检查列的 DATA_TYPE(例如,您不需要更新整数列)
然后使用动态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>)
你复制结果并执行它,你就完成了。
你可以这样做:
update MyTable -- <<=== Your table name
set myColumn = null -- <<=== Your column name
where myColumn='x000D'
此查询将清除设置为x000D
的myColumn
所有行中的值x000D
。
使用更正的 xls 可以更容易地整理和重新加载表格