2016-11-20 1 views
0

나는 SQL 서버 2014 데이터베이스추출 문자

  • XXXX에 다음 예제 데이터, YYYY가 : 679,459
  • XXXX, YYYY : 679459
  • XXXX, YYYY : 679459
  • XXXX, YYYY : 679459

는 데이터가 기록되고 위의 형식 중 하나에 기록되는 방식의 통일성이없는 볼 수 있듯이. 내가 마지막 먼저 이름을 추출하기 위해 노력하고있어

즉 XXXX, 일부 인터넷 검색에서 YYYY

나는 다음을 발견하고이 곳은 일

left(EMP_CLass_9_descr, isnull(nullif(charindex(' :', EMP_CLass_9_descr),0) - 1,8000)) As TM_NAME

그것을 시도 전과 공간 :

는 또한

left(EMP_CLass_9_descr, isnull(nullif(charindex(':', EMP_CLass_9_descr),0) - 1,8000)) As TM_NAME 
012을 시도 679459

나는 단지 XXXX, YYYY를 추출이 기록 할 수있는 방법이 있나요 : 3,516,

다음 즉,이

  • XXXX로 표기되는 시나리오에 공백, YYYY를 포함?

    제공 할 수있는 도움에 미리 감사드립니다.

+0

현재 쿼리가 이미 수행합니다. –

답변

1

Rasmac, 거의 다 왔었습니다. 이것을 시도하십시오 :

left(EMP_CLass_9_descr, isnull(nullif(charindex(':', REPLACE(EMP_CLass_9_descr,' ','')),0) - 1,8000)) As TM_NAME 
+0

백만 명의 감사합니다. 그 작품! 매우 감사. – rasmac

2

이 작동합니다 :

select ltrim(rtrim(left(EMP_CLass_9_descr, 
         charindex(':', EMP_CLass_9_descr + ':' 
           ) 
         ) 
       )) 

이것은 ':'을 찾습니다뿐만 아니라 이름 끝에 콜론을 추가하여 하나가 있는지 확인합니다. 그런 다음 반환 된 값을 트리밍하여 선행 및 후행 공백을 제거합니다.

+0

감사합니다. Gordon, 솔루션은 당신이 말한 것과 정확히 동일하지만 John이 제공 한 솔루션이 내가 찾고있는 솔루션이었습니다. 감사합니다. 많이 받으 셨습니다. – rasmac

+0

@rasmac. . . 나는이 버전이 더 간단하다고 생각한다. –