2017-09-20 7 views
1

다음 코드를 사용하여 서식이 지정된 필드에서 성만 가져 오는보기에 열을 추가하려고합니다. '성, 이름은'다음과 같은 질문에서 참조로, 그러나, 필드에 쉼표가있는 경우이 잘 작동쉼표가있는 열에서 선택하기위한 SQL Case 문에 대한 지원

VALUE(RTRIM(SUBSTR(A.PREVIOUS_NAMES,1,LOCATE(',', A.PREVIOUS_NAMES)-1)), '') 
AS "PREVIOUS_NAME", 

, 쉼표가 존재하는 오류보기가 아닌 경우.
SQLCode=-138 flagging on large count tables but not small DB2

나는 쉼표가있는 경우 선택,이를 수용 할 경우 문을 마련하려고했지만, 나는 실패 봤는데, 내가 경험이있는 사람들의 도움이나 제안을 추구하고있다.

RTRIM(
    CASE WHEN LOCATE(",", A.PREVIOUS_NAMES) = 0 
    THEN A.PREVIOUS_NAMES 
    ELSE SUBSTR(A.PREVIOUS_NAMES,1,LOCATE(",", A.PREVIOUS_NAMES)-1) 
    END) AS "PREVIOUS_NAME" 

그것은 매우 정교한 아니라, 그것은 "이 사용되는 상황에서는 유효하지 않습니다"라고 나에게 SQLCODE-206을 제공합니다.

도움을 주셔서 감사합니다.

답변

0

나는 DB2에 이런 짓을하지 않은,하지만이 주변의 일반적인 방법은 쉼표 추가하는 것입니다

VALUE(RTRIM(SUBSTR(A.PREVIOUS_NAMES, 1, LOCATE(',', A.PREVIOUS_NAMES || ',') - 1)), '') 
AS "PREVIOUS_NAME", 
+0

이 내가 성취하려는 정확히 무슨 짓을. 고든 고마워요. – XB1213