2014-04-03 2 views
2

내 직원 테이블에서 정보를 얻고 데이터를 반환하는 저장 프로 시저가 있습니다. 그 중 하나가 null로 발생하는 경우TSQL은 Null 값과 관계없이 데이터를 가져옵니다.

B.[SiloDesc] + ' (' + B.[TitleDesc] + ') ' + B.[SkillSetDesc] as SkillSetDesc, 

내 문제는, 그것은 늘 어떤 데이터를 표시한다 :

이 사용됩니다 3 열이 있습니다. 해당 필드 중 하나가 null인지 여부에 관계없이 데이터를 포함시키는 가장 좋은 방법은 무엇입니까?

+1

B :에 관계없이 괄호를 유지 COALESCE (B. [SiloDesc], '') – dnoeth

+0

찾았습니까 [어느 쪽을] (http://stackoverflow.com/a/22844223/621962) [대답] (http://stackoverflow.com/a/22844157/621962) 도움이 되셨습니까? – canon

답변

2

당신은 각각의 컬럼에 대해 coalesce() 또는 isnull()를 사용할 수 있습니다 ... 또는 간단하게 사용할 수 ...

CONCAT (string_value1, string_value2 [, string_valueN ])

는 문자열 인수와 서로 연결하여 다양한 수의 이동합니다 그것들을 하나의 문자열로 묶는다. 최소 2 개의 입력 값이 필요합니다. 그렇지 않으면 오류가 발생합니다. 모든 인수는 암시 적으로 문자열 유형으로 변환 된 다음 연결됩니다. Null 값은 암시 적으로 빈 문자열로 변환됩니다. 때문에 null는 SQL에서 처리되는 방식, 표현 concat()가 취급 null' (' + null + ')' 결과

select concat(B.[SiloDesc], ' (' + B.[TitleDesc] + ')', ' ' + B.[SkillSetDesc]) 

: TitleDescnull

: 괄호를 제거 빈 문자열로 ... 값이인 경우 효과적으로 괄호를 제거하므로 좋음.

select concat(B.[SiloDesc], ' (', B.[TitleDesc], ') ', B.[SkillSetDesc]) 

샘플 : : 각 null 인 열, 예를 들어, 대한 COALESCE를 추가 할 필요가

select concat('john', ' (' + null + ')', ' adams') -- john adams 
select concat('john', ' (test)', ' ' + null) -- john (test) 
select concat('john', ' (the man)', ' adams') -- john (the man) adams 
2
isnull(B.[SiloDesc], '') 
    + ' (' + isnull(B.[TitleDesc], '') + ') ' 
    + isnull(B.[SkillSetDesc], '') as SkillSetDesc, 
관련 문제