Я работаю с базой данных 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 - самое близкое, что я могу найти, но это позволяет только заменить одну строку другой. Не поддерживает диапазоны символов и не позволит мне сделать выше.
Мы работаем на Sybase ASE 12.5 на серверах Unix.