2014-11-26 7 views
2

UNION 절이있는 쿼리가 있습니다. 필드 중 하나는 일반 하드 코딩 된 문자열입니다. UNION 다음의 명령문에서 문자열은 UNION 앞에있는 필드의 문자열 길이와 일치하도록 잘립니다. 소리가 혼란 스럽습니까? 여기에 예제가 있습니다.UNION ALL 뒤에 Teradata 문자열이 잘립니다.

SELECT 'abc' as xxx 
FROM tbl1 
UNION ALL 
select 'defghi' as xxx 
FROM tbl2; 

위의 쿼리의 경우, I 출력이

abc 
def 

어떤 생각이며, 출력은 그러나

abc 
defghi 

것으로 기대?

편집 : 해결 방법 : 현재 UNION 앞에 더 긴 문자열이있는 SELECT 문을 사용하는 것이 좋습니다. 예 :

SELECT 'defghi' as xxx 
FROM tbl2 
UNION ALL 
select 'abc' as xxx 
FROM tbl1; 

이렇게하면 예상되는 결과를 얻을 수 있습니다. 그러나 더 나은 대안이 있습니까?

답변

6

첫 번째 데이터 타입을 촬영하지만,이 같은 경우에, 다른 열이 문자 남아 (6) 문자로 원하는 데이터 형이 캐스팅 할 수 있습니다 (3)

SELECT CAST('abc' as char(6)) as xxx 
FROM tbl1 
UNION ALL 
select 'defghi' as xxx 
FROM tbl2; 
+0

미안 해요, 그러나 쿼리는 실행되지 않습니다. 구문 오류가 발생합니다. – idok

+0

위 쿼리는 nvarchar (6) 대신 char (6) 인 경우 작동합니다. 제안 해 주셔서 감사합니다. 질의를 업데이트 해 주시면 답변을 수락하겠습니다. – idok

+0

을 varchar로 변경하여 nvarchar가 teradata에 존재하지 않음을 잊어 버렸습니다. – overflowed