Я пытаюсь удалить определенные символы из VARCHAR2
с помощью перевода. Однако символы 160
(какой-то пробел) и 243
(символ управления абзацем?) кажутся «фантомными» символами, которые не обнаруживаются ни INSTR
, ни TRANSLATE
. LENGTH
работает, но только если это единственный символ в строке. LENGTH(CHR(160))
возвращает 1
, но LENGTH(CHR(160) || CHR(110))
также возвращает 1
, хотя вы думали, что он вернет 2
. Я обнаружил, что REPLACE
работает при удалении этих фантомных символов из строки, но мне нравится лучше переводить, потому что его легче читать и поддерживать, тогда как длинное вложение или функции REPLACE
просто громоздки.
Есть ли другой способ удалить эти символы из VARCHAR2
без использования замены?
РЕДАКТИРОВАТЬ: похоже, что символ 243 в другом месте регистрируется как ≤
. Однако у Oracle нет проблем с отображением этого символа, когда я выбрал его явно. Когда я выбираю CHR(243)
, он просто отображает символ замены блока. Кроме того, этот источник указывает 243 на символ абзаца, который имеет больше смысла, поскольку это управляющий код.
ASCIISTR()
мог их вырезать.. - person Maheswaran Ravisankar   schedule 06.03.2014\FFFD\FFFD
. Если он может преобразовать их, само собой разумеется, что он также может их удалить. Я не могу использовать регулярное выражение, если\FFFD
когда-либо является допустимой строкой в столбце. - person oscilatingcretin   schedule 06.03.2014dump(your_column)
для образца? - person Maheswaran Ravisankar   schedule 06.03.2014