2016-08-20 2 views
1

출력을 생성하는 데 사용하는 SQL 문을 알아야합니다. 셀에 null이 있으면 그 옆 열에서 정보를 가져옵니다.SQL Server는 null을 빈 문자열로 바꿉니다.

더 잘 설명하려면 : 나는 3 개의 테이블을 가지고 있는데, 테이블 1은 7 개의 컬럼을 포함하고, 테이블 2는 6 개의 컬럼을 포함하고, 테이블 3은 4 개의 컬럼을 포함합니다.

테이블 1에서 1 열을 선택하고 대시를 누른 다음 다른 테이블에서 3 열을 선택하고 다른 테이블에서 대시와 다른 열을 선택한 다음 열이 null을 포함하는 경우 값을 대시 '-'.

SELECT 
    Episode_Name, '-', Pnr_FName, Pnr_LName, Guest, '-', Car_Make 
FROM 
    EPISODES, PRESENTERS, CARS 

나는 시도했다 :

내가 지금까지 가지고있는 코드입니다

(CASE WHEN Guest = null THEN '' 
END EPISODE) 

을하고 난 select 문에 바인딩하지만이 작동하지 않았다.

도움이 될 것입니다. 감사

+0

[나쁜 습관을 걷어차 : 이전 스타일을 사용하여 조인 (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old -style-joins.aspx) - 구식 * 쉼표로 구분 된 테이블 * 목록이 ANSI에서 * 적절한 * ANSI'JOIN' 구문으로 대체되었습니다. ** ** ** SQL 표준 (** 20 개 이상 몇 년 전 **) 그리고 그 사용은 권장하지 않습니다. –

답변

0

NULL에 대한 열 값은 = 연산자를 사용하여 확인할 수 없습니다. 결과가 wil이므로 나도 NULL 일거야. 대신 IS NULLIS NOT NULL을 사용해야합니다. 그러나 가독성을 위해 CASE 문 대신 COALESCE을 사용합니다.

사용 COALESCE : 그런데

SELECT CONCAT(COALESCE(Episode_Name, ' '), 
       '-', 
       COALESCE(Pnr_FName, ' '), 
       COALESCE(Pnr_LName, ' '), 
       COALESCE(Guest, ' '), 
       '-', 
       COALESCE(Car_Make, ' ')) 
FROM EPISODES, PRESENTERS, CARS 

, 대신 FROM 절, 예를 들어, 쉼표를 사용하는 조인 구문을 명시 적으로 사용해야합니다

FROM EPISODES e INNER JOIN PRESENTERS p 
    ON e.col = p.col 
0

내가 한 시도 : (CASE를 고객 = NULL THEN ''END 에피소드는 경우) 당신은 널 (null)이있는 경우에는 확인하기 위해, 널 (null)을 비교할 수 없습니다

case when guest is null then '' end 

시도 IS NULL을 사용해야합니다.