2012-06-13 1 views
0

오케이 제목이 상황을 충분히 설명하지 못했습니다. 지금 이것은 내가 그럼 난 두 개의 테이블을 조인 열 CHAR (4) 테이블 조인에서 네 번째 CHAR가 표시되지 않았습니다.

Table1 
Columns0, CHAR(20), NOT NULL. 
Columns1, CHAR(4), Allow Nulls. 
Data : 'ARR ' 

Table2 
Columns0, CHAR(20), NOT NULL. 
Columns1, CHAR(4), NOT NULL. 
Data : 'ARR ' 

와 테이블이 , 그것을이다.

'ARRARR ' 왜 이런 일이 않는

SELECT (ISNULL(a.Columns1,'') + ISNULL(b.Columns1,'')) AS WhatEver 
FROM Table1 a 
left join Table2 b on a.Columns0 = b.Columns0 

결과는 대신의 'ARR ARR '
으로 표시해야한다, 그것은 나타 납니까?


편집 2012/06/11 :

은 어려움을 겪고 후, 내가 좋아하는 일을 결국 : 나는 올바른 결과 'ARR ARR '

을 얻을 경우에만 그 다음

SELECT ISNULL(CONVERT(CHAR(4),a.Columns1),'') + ISNULL(b.Columns1,'') 

하지만 꽤입니다 내 데이터 유형이 CHAR(4)인지 확인하십시오.

감사들 ..


편집 2012년 8월 6일 :

내가 작업이 (CHAR (4), NULL)에 표 2를 COLUMN 1을 변경하는 것입니다 발견 또 다른 솔루션입니다. 이 ALTER TABLE을 통해 수행 할 수 있습니다 [TABLE_NAME] [COLUMN_NAME] [column_data_type] [널 (null) | null이 아닌]을 수정할

답변

1

귀하의 예를 들어 내 서버 (SQL 서버 2008 R2)에 잘 작동합니다 :

create table SOxx1 
(
    col1 char(4), 
    col2 char(20) not null 
) 

create table SOxx2 
(
    col1 char(4), 
    col2 char(20) not null 
) 
Go 

insert into SOxx1 (col1, col2) VALUES ('ARR ', 'abc') 
insert into SOxx2 (col1, col2) VALUES ('ARR ', 'abc') 
go 

SELECT (ISNULL(a.col1,'') + ISNULL(b.col1,'')) AS WhatEver 
FROM SOxx1 a 
left join SOxx2 b on a.Col2 = b.Col2 

-- OUTPUT is 'ARR ARR ' 
+0

하나의 조건은 내 SOxx1 col2가 ALLOW NULL이고 SOxx2 col2가 NULL이 아님 어떻게 이런 일이 발생할지 확신 할 수 없지만 방금 해결했습니다. 감사 – Robin1990

-1
SELECT (ISNULL(a.Columns1,'') +ISNULL(b.Columns1,'')) AS WhatEver FROM Table1 a left join Table2 b on a.Columns0 = b.Columns0 
+0

데이터의 공간 끝이 있습니까? – DevT

+0

OP는 그의 데이터에서 공간이 나타날 것으로 기대하고 있습니다 : 그는 "ARR'"+ "'ARR'"을 가지고 있으며 "ARR ARR'"을 기대하고 있습니다. – Blorgbeard

+0

죄송합니다 .. 죄송합니다. 제가 확인하겠습니다. 그 공간을 보지 못했습니다 – DevT

0

확실하여 열 CHAR하지 VARCHAR되어 있습니까?

SQL Server에서 결과를 얻은 후에도 공백을 제거하지 않습니다.

이 시도 할 수 :

declare @table1 table (id int, one char(4)) 
declare @table2 table (id int, one char(4)) 
insert into @table1 values (1 ,'ARR ') 
insert into @table2 values (1 ,'ARR ') 
select (isnull(a.one,'') + isnull(b.one,'')) AS WhatEver 
from @table1 a left join @table2 b on a.id = b.id 

를 내가 얻을, 예상대로

ARR의 ARR

+0

그렇다면 실제로 무슨 일이 일어나는지 이해하지 못합니다 .. Yah 내 데이터 유형은 CHAR (4)입니다. – Robin1990

+0

SSMS 또는 다른 프로그램을 통해 스크립트를 실행하고 있습니까? – Blorgbeard

0

다른 데이터 정렬을 시도 했습니까?

SELECT ISNULL(a.Columns1,'') collate Latin1_General_BIN + ISNULL(b.Columns1,'') collate Latin1_General_BIN AS WhatEver 
FROM Table1 a 
left join Table2 b on a.Columns0 = b.Columns0 
관련 문제