2012-04-03 4 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()입니다. 트림 후행 공백 : 유형 text or varchar이 아닌

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

acct_type_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

관련 문제