SELECT rat.TargetNo
, rat.TargetUniqueNo
, rat.RegistType
, rat.AddressType
, (CASE WHEN rat.Sido LIKE '서울%' THEN '서울특별시'
WHEN rat.Sido LIKE '부산%' THEN '부산광역시'
WHEN rat.Sido LIKE '울산%' THEN '울산광역시'
WHEN rat.Sido LIKE '대전%' THEN '대전광역시'
WHEN rat.Sido LIKE '대구%' THEN '대구광역시'
WHEN rat.Sido LIKE '광주%' AND rat.Sido != '광주시' THEN '광주광역시'
WHEN rat.Sido LIKE '인천%' THEN '인천광역시'
WHEN rat.Sido LIKE '경기%' THEN '경기도'
WHEN rat.Sido LIKE '강원%' THEN '강원도'
WHEN rat.Sido LIKE '충남%' THEN '충청남도'
WHEN rat.Sido LIKE '충북%' THEN '충청북도'
WHEN rat.Sido LIKE '경남%' THEN '경상남도'
WHEN rat.Sido LIKE '경북%' THEN '경상북도'
WHEN rat.Sido LIKE '전남%' THEN '전라남도'
WHEN rat.Sido LIKE '전북%' THEN '전라북도'
WHEN rat.Sido LIKE '제주%' AND rat.Sido <> '제주시' THEN '제주특별자치도'
WHEN rat.Sido LIKE '세종%' THEN '세종특별자치시'
WHEN rat.Sido LIKE '%[남도|북도]' THEN rat.Sido
ELSE NULL END ) AS Sido
, rat.DongRi
, rat.Jibun
, rat.BuildingName
, rat.BuildingNameUseYn
, rat.JibunUseYn
, ( CASE WHEN LEN(rat.BuildingDong) > 0 THEN rat.BuildingDong + '동' ELSE null END ) AS BuildingDong
, ( CASE WHEN LEN(rat.BuildingHo) > 0 THEN rat.BuildingHo + '호' ELSE null END ) AS BuildingHo
, rat.BuildingDongHoUseYn
, rat.BuildingHoUseYn
, rat.BuildingDongUseYn
, ( rat.Sido + N' ' + rat.DongRi + N' ' +
( CASE WHEN rat.RegistType <> N'집합건물' THEN rat.Jibun
WHEN rat.JibunUseYn = 'Y' THEN rat.Jibun
WHEN rat.BuildingNameUseYn = 'Y' THEN rat.BuildingName ELSE '' END ) +
( CASE WHEN rat.BuildingHoUseYn = 'Y' THEN N' ' + rat.BuildingHo + N'호'
WHEN rat.BuildingDongUseYn = 'Y' THEN N' ' + rat.BuildingDong + N'동'
WHEN rat.BuildingDongHoUseYn = 'Y' THEN N' ' + rat.BuildingDong + N'동 ' + rat.BuildingHo + N'호' ELSE '' END )
) AS FullAddress
, rat.UseYn
FROM RegistrationAlarmTarget AS rat WITH(NOLOCK)
문자열을 + 붙이던 중 특정 조건일 경우에 ELSE 를 생략하면 NULL 이 반환된다.
비교조건이 CASE WHEN 을 거쳐서 다른 비교 조건이 있을때 ELSE 가 없으면 결과 리턴인 안되는 거 같음.
ELSE '' END 구문 추가시 모든 결과 정상 리턴됨.