Я переношу данные из одной базы данных Netezza в другую, используя инструмент Talend, инструмент ETL. Когда я извлекаю данные из поля varchar (30) и пытаюсь поместить его в поле varchar (30) новой базы данных, он дает ошибку, говоря, что он слишком длинный. Журналы показывают, что в поле есть пробел в конце, за которым следует квадрат, представляющий некоторый символ, который я не могу понять. Я прикрепил скриншот журналов ниже. Я попытался написать SQL, чтобы вытащить это поле и заменить то, что я считал CRLF, но не повезло. Когда я делаю выбор в поле и получаю длину, у него есть несколько дополнительных символов, чем то, что вы видите, поэтому что-то есть, и я хочу избавиться от него. Обрезка ничего не делает.Как избавиться от специального символа в столбцах Netezza
Этот SQL не возвращает длину, меньшую, чем просто длина length() для самого столбца. Кто-нибудь знает, что еще может быть?
SELECT LENGTH(trim(translate(TRANSLATE(<column>, chr(13), ''), chr(10), ''))) as len_modified
Обратите внимание, что последний столбец в журналах, где вы видите квадрат в скобках, должен показать последний символ рассмотрен.
Ваше предложение об использовании функции ascii было тем, что помогло мне понять, что это неразрывное пространство, значение unicode 160. Я просто запустил функцию ascii в столбце, используя символ в 29-м индексе (используя функцию подстроки). Я смог удалить его с помощью функции перевода и chr (160). Благодаря!! – Kelly
Не проблема. Я столкнулся с этой проблемой 20+ раз. Это было мое решение, которое до сих пор работало каждый раз для меня. Есть списки других персонажей, многие из которых выглядят невидимыми, что вы можете увидеть эту проблему. –