我正在使用一个 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 上运行。