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
(注)カッコ内の広場を見たログの最後の列は、最後の文字検討を表示することになっていること。
あなたの提案は、それが非破壊空間、ユニコード値160だったことに気づいたのでした。私は、29番目のインデックス(substring関数を使用)の文字を使用して列のascii関数を実行しました。私はそれをtranslate関数とchr(160)を使って削除することができました。ありがとう!! – Kelly
問題はありませんこの同じ問題を20回以上経験しました。これは今まで私のために毎回働いていた私の解決策でした。他の文字のリストがあり、それらの多くは目に見えないように見えますが、あなたはこの問題を潜在的に見るでしょう。 –