0

我们正在使用前端软件允许输入无效字符的数据库。(我无法控制或重写软件。)

字符的类型是回车符、换行符、�、¶,基本上任何不是 0-9、az 或标准标点符号的字符都会导致我们出现数据库问题以及我们如何使用数据。

我正在寻找一种方法来扫描整个数据库以识别这些无效代码并将它们显示为结果或将它们删除?

我一直在看这个网站,想知道是否有办法搜索某个范围?但我可能会叫错树。

我对 SQL 还很陌生,所以请对我温柔一点,谢谢。

4

2 回答 2

0

既然你说

然后数据移动到无法处理这些字符的第二个程序,这会导致进程失败。

我想知道您是否可以将不可读的数据保留在原处,并为仅在第二个进程失败时才填充的已更改数据创建一个新列。您仍然需要测试失败单元格中数据的每个字符,但您不必测试每一行的每个字符。在确定要处理的更新文本后,您可以使用更新后的值再次调用第二个进程。

于 2013-05-23T16:52:33.080 回答
0

我能想到的唯一方法是编写一个存储过程,它使用系统表来获取相关数据库/模式中所有字段的列表。让它排除系统表(或只包括用户定义的表),然后根据系统表查询中找到的列/表动态写出 SQL 更新语句。使用本文中的正则表达式或字符删除

有问题的系统表是:

SELECT
 table_name,column_name
FROM
 information_schema.columns

伪代码将是:

Get list of tables we want to do this for
For each table in list
get list of columns for table that have string data.
For each column in table
generate update statement to strip unwanted characters
--Consider writing out table, column key, before after values to history table. incase this 
has to be undone.
--Consider counter so I have an idea of what was updated
execute updatestatement
next column
next table
write out counter
于 2013-05-23T16:39:18.777 回答