DB2

2012-05-21 4 views
1

에서 문자의 처음 나타나는 제거 I 아래와 같은 값으로 열이 두 개의 다른 행에 123.2, 123.4 유형입니다. 따라서 book_id 123은 2 권의 책 2, 4를 가지게됩니다. 따라서 동일한 book_id의 2 행에서 2와 4를 추출하려면 위 쿼리를 작성해야합니다.DB2

분명히 '중복'이 필요없는 'BOOK #'단어 뒤에 오는 ','쉼표가 추가됩니다.

위의 쿼리를 수정하여 제거 할 수 없습니다.

위의 쿼리에서 수용 할 수있는 열 값에서 첫 번째 문자 (쉼표)를 제거 할 수있는 방법이 있습니까?

내 출력은 다음과 같아야합니다

BOOK # 7,8 
BOOK # 2 
BOOK # 13,14 

읽어 주셔서 감사합니다!

답변

0

문구가 거의 동일하지만 첫 번째 문자를 제거하는 것이 특정 문자의 첫 번째 문자를 제거하는 것보다 훨씬 쉽습니다. 다행히 첫 번째 문자를 삭제하면 문제가 해결됩니다. 이 같은 SUBSTR() 전화로 XMLSERIALIZE() 표현을 때우는하여 해당 작업을 수행 할 수 있습니다 서지 Rielau에

CONCAT('BOOK # ', 
    SUBSTR(
     XMLSERIALIZE(XMLAGG(XMLTEXT(CONCAT(',', SUBSTR(TRIM(TEMP.BOOK_NUM), 
      LOCATE('.',TEMP.BOOK_NUM)+1)))) AS VARCHAR(1024)) 
     ,2 
    ) 
) 

감사를 자신의 blog이 트릭을 게시.

1

간단하면 REPLACE 기능을 사용하십시오.

'BOOK #'을 (를) 'BOOK #'(으)로 바꿉니다.

+0

제시된 경우 솔루션이 작동합니다. 그러나, 제가 한 질문에 대한 해결책이 있습니까? - 주어진 문자의 첫 번째 항목 바꾸기. 이러한 모든 요구 사항에서 교체가 작동하지 않을 수도 있습니다. – Nik

+0

@ NikunjChauhan은 존재할 수 있지만 어떻게해야할지 모르겠다. :) –

0
SELECT REPLACE (colname , (SUBSTR(colname ,1 ,LOCATE(',',colname)-1)) , (SUBSTR(colname ,1 ,LOCATE(",",colname)-1))|| ' ') from *sometable*