2012-04-03 13 views
2

このINSERT文はあり、acct_descフィールドの最後にスペースが残っているようです。私は、挿入ステートメント中に後続のスペースが発生するのを防ぐ方法を知りたいです。挿入時に末尾のスペースを使用しないでください

INSERT INTO dwh.attribution_summary 
SELECT d.adic, 
     d.ucic, 
     b.acct_type_desc as acct_desc, 
     a.begin_mo_balance as opening_balance, 
     c.date, 
     'fic' as userid 
FROM fic.dim_members d 
JOIN fic.fact_deposits a ON d.ucic = a.ucic 
JOIN fic.dim_date c ON a.date_id = c.date_id 
JOIN fic.dim_acct_type b ON a.acct_type_id = b.acct_type_id 
WHERE c.date::timestamp = current_date - INTERVAL '1 days'; 

答えて

4

PostgreSQL trim()関数を使用してください。
trim(), rtrim() and ltrim()があります。 acct_type_descはタイプtext or varcharでない場合、最初のテキストにキャスト

... 
rtrim(b.acct_type_desc) as acct_desc, 
... 

... 
rtrim(b.acct_type_desc::text) as acct_desc, 
... 

acct_type_descはタイプchar(n)である場合、テキストにキャストすると、末尾のスペースを削除し末尾のスペースをトリミングする 自動的には、trim()は必要ありません。

+0

rtrim()は完全に機能しました。ありがとうございました。 – precose

3

acct_descの種類は何ですか?

  • CHAR(n)の場合、DBMSは最後に空白を追加するだけで選択肢はありません。 SQL標準にはそれが必要です。
  • VARCHAR(n)の場合、DBMSは最後にスペースを追加しません。
  • PostgresSQLがそれらをサポートしていれば、タイプの国別バリアント(NCHAR、NVARCHAR)は、対応する非国家バリアントと同じように動作します。
+2

PostgreSQLにはNCHARもNVARCHARもありません –

+0

カラムタイプはvarchar()ですが、テーブルの引き出しに問題があったことが分かりました。私は私の問題を解決するために、他の答えの解決策を使用しました。あなたの洞察をありがとう! – precose

関連する問題