2012-04-03 51 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()。 要修剪尾隨空格

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

如果acct_type_desctext or varchar類型不,它轉換到第一個文本:

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

如果acct_type_descchar(n)型的,它鑄造於文本中刪除尾隨空格自動,不需要trim()

+0

rtrim()完美地工作。謝謝。 – precose 2012-04-03 18:37:08

3

acct_desc是什麼類型的?

  • 如果是CHAR(n),那麼DBMS別無選擇,只能在最後添加空格; SQL標準要求。
  • 如果它是VARCHAR(n),那麼DBMS不會在末尾添加空格。
  • 如果PostgresSQL支持它們,這些類型的國家變體(NCHAR,NVARCHAR)的行爲將與相應的非國家變體相同。
+2

PostgreSQL中沒有NCHAR或NVARCHAR – 2012-04-03 16:19:55

+0

列類型是varchar()但我意識到問題是我從中拉出的表中有這些額外的空間。我使用其他答案的解決方案來解決我的問題。感謝您的見解! – precose 2012-04-03 18:37:50