2009-07-10 3 views
3

는이 같은 SQL 문을 가지고있다. 누군가 내가 잘못하고 있다고 제안 할 수 있습니까? 고맙습니다.문자 설정이 일치하지

+0

ColumnB 및 ColumnC 열은 어떻게 정의됩니까? 쿼리가 ELSE 절없이 작동합니까? – Plasmer

+0

성명서에는 아무런 문제가 없습니다 (마지막 조인은 a, b SomeColumn에 있고 당신은 단지 열 이름을 축약 한 것으로 가정하십시오). 질문을 데이터베이스 문자 집합 정보로 업데이트 할 수 있습니까? – dpbradley

+2

답변을 찾았습니다. ELSE 부분을 ColumnC와 동일한 유형으로 CAST해야합니다. CASE 표현식의 결과에 대한 데이터 유형을 알고있는 방식 일 수 있습니다. CASE WHEN ...... ELSE CAST (''AS NVarchar2 (1)) END –

답변

0

''를 NULL로 바꾸시겠습니까? 또한 어쨌든 NULL을 반환하므로 ELSE 부분을 모두 제거하십시오.

+0

ColumnB의 값을 ColumnB에 추가하려면 ColumnB에 값을 추가하십시오. ELSE 부분을 NULL로 바꾸면 전체 값은 NULL이되고 (b.ColumnB || NULL = NULL) 나는 그것을 원하지 않습니다. –

+0

사실이 아닙니다. 듀얼에서 'a'를 선택하십시오. 은 'a'를 반환합니다. – jva

+0

또한 빈 문자열 상수 ('')는 "to_char (NULL)"을 작성하는 방법 일뿐입니다. – jva

2

CAST 문없이 VARCHAR 및 NVARCHAR 값을 연결할 수 없습니다.

1
CASE WHEN TRIM(c.ColumnC) IS NOT NULL 
    THEN ' (' || c.ColumnC || ')' 
    ELSE N'' END A 

은보다 간결한 솔루션입니다. N ''은 유니 코드 빈 문자열을 제공합니다.

0

ELSE를 지우고 코드를 읽기 쉽게 만듭니다.

관련 문제