2017-11-08 2 views
1

나는 다음과 같은 SQL 문이 :이 말에 쉼표를 삽입합니다SQL 서버 연결은 쉼표로 구분

@All = COALESCE(NULLIF(@Asc1, '') + ',', '') + 
     OALESCE(NULLIF(@Asc2, '') + ',', '') + 
     OALESCE(NULLIF(@Asc3, '') + ',', ''); 

을도 변수 (@Asc1, @Asc2, @Asc3을)의 경우 NULL 또는 빈 값이 있습니다. 예를 들어

:

  • @Asc1 = 1234@Asc2 = 3456@Asc3 = '' 경우, 다음 @All 내가 @All1234,3456

    감사하고 싶습니다 1234,3456,

끝나게됩니다.

+0

코드를 제공 어쩌면 [CONCAT 함수는 (https://docs.microsoft.com/en-us/sql/t-sql/functions/concat-transact-sql) 단순화 할 수 있습니다 최소한에 있습니다 SQL Server 2012. – kirchner

답변

3

첫 번째 쉼표를 제거 stuff()를 사용하고 쉼표 연결을 반전 :

set @all = stuff(
    coalesce(','+nullif(@Asc1, ''), '') 
    + coalesce(','+nullif(@Asc2, ''), '') 
    + coalesce(','+nullif(@Asc3, ''), '') 
    ,1,1,''); 

rextester 데모 : http://rextester.com/UNDS90887

반환 : 1234,3456

+0

첫 번째 값이 NULL 인 경우를 처리하지 않았으므로이 값을 받아 들일만한 가치가 있습니다. – gotqn

+0

@Eclipse 도와 드리겠습니다! – SqlZim

0

나는이 게시물은 이미 대답 정확 알고. 그러나 아래의 답변을 게시하고 싶습니다. SQL Server 2017 이후부터는이 방법이 너무 쉽고 나중에 someoen이 도움이 될 수 있기 때문입니다.

SELECT @all = CONCAT_WS(',',@Asc1,@Asc2,@Asc3)