ETL 도구 인 Talend를 사용하여 한 Netezza 데이터베이스에서 다른 Netezza 데이터베이스로 데이터를 전송합니다. varchar (30) 필드에서 데이터를 가져 와서 새 데이터베이스의 varchar (30) 필드에 넣으려고하면 너무 길다는 오류가 발생합니다. 로그는 필드 끝에 공백이 있고 그 뒤에 사각형이 표시되어 알아낼 수없는 문자를 나타냅니다. 아래 로그의 스크린 샷을 첨부했습니다. 나는이 필드를 끌어 와서 CRLF라고 생각했던 것을 대체하기 위해 SQL을 쓰려고했지만 운이 없다. 필드를 선택하고 길이를 얻을 때 볼 수있는 것보다 몇 가지 여분의 문자가 있으므로 뭔가가 있으며 제거하려고합니다. 트리밍은 아무 것도하지 않습니다.Netezza 열에서 특수 문자 제거 방법
이 SQL은 단순히 열 자체에서 length()를 수행하는 것보다 짧은 길이를 반환하지 않습니다. 다른 사람이 무엇인지 알 수 있습니까?
SELECT LENGTH(trim(translate(TRANSLATE(<column>, chr(13), ''), chr(10), ''))) as len_modified
당신은 괄호 안에 사각형을 볼 수있는 로그의 마지막 열이, 조사 마지막 문자를 표시하도록되어 있다는
참고.
ascii 함수 사용에 대한 제안은 획기적인 공간 인 유니 코드 값 160이라는 것을 깨닫는데 도움이되었습니다. 서브 인덱스 함수를 사용하여 29 번째 색인의 문자를 사용하여 열에 ascii 함수를 실행했습니다. 나는 translate 함수와 chr (160)을 사용하여 그것을 제거 할 수 있었다. 감사!! – Kelly
문제는 아니지만 20 번 이상이 문제가 발생했습니다. 이것은 지금까지 저를 위해 매번 일한 나의 해결책이었습니다. 보이지 않는 다른 문자 목록이있어이 문제를 잠재적으로 볼 수 있습니다. –