【发布时间】:2010-02-10 21:30:51
【问题描述】:
我正在使用一个 Sybase 数据库,该数据库似乎在某些字符串字段中有不可打印的字符,这会导致我们的一些处理代码丢失。乍一看,它似乎只有换行符和回车符,但其中还有一个 ASCII 码 27 - 一个 ESC 字符、一些重音字符,以及其他一些奇怪的东西。
我无权直接更改数据库,因此目前还不能更改坏数据。现在我不得不将其过滤掉。我们正在尝试从一个数据库中导出表数据,然后在夜间批处理中将其加载到另一个应用程序使用的数据库中。
理想情况下,我希望有一个函数,我可以传递一个字符列表,然后让 Sybase 返回删除这些字符的数据。如果可能的话,我想保留一些我们可以用普通 SQL 做的事情。
像这样删除 ASCII 0 - 31 的字符。
选择 str_replace(FIELD1, (0-31), NULL) 作为 FIELD1, str_replace(FIELD2, (0-31), NULL) 作为 FIELD2 来自表
到目前为止,str_replace 是我能找到的最接近的,但它只允许用另一个字符串替换一个字符串。不支持字符范围,不会让我执行上述操作。
我们在 Unix 服务器上的 Sybase ASE 12.5 上运行。
【问题讨论】: