2012-07-25 2 views
0

전적으로 쿼리를 단순화해야합니다. 다음은 쿼리의 일부입니다LEFT/REPLACE 쿼리를 단순화합니다.

내가 고정 길이 문자열을 구축하고 있기 때문에
SELECT 
    LEFT(MLIS.REQUESTOR_FIRST_NAME, CharIndex(' ', MLIS.REQUESTOR_FIRST_NAME + ' ') - 1) 

    , CharIndex(' ', LEFT(MLIS.REQUESTOR_FIRST_NAME, CharIndex(' ', MLIS.REQUESTOR_FIRST_NAME + ' ') - 1) + ' ') - 1) 

    +REPLICATE(' ',25),25)+ 
    LEFT(' '+REPLICATE(' ',20),20)+ 
    LEFT(

    LEFT(

    LEFT(MLIS.REQUESTOR_LAST_NAME, CharIndex(',', MLIS.REQUESTOR_LAST_NAME + ',') - 1) 

    , CharIndex(',', LEFT(MLIS.REQUESTOR_LAST_NAME, CharIndex(',', MLIS.REQUESTOR_LAST_NAME + ',') - 1) + ',') - 1) 

나는 replicates을 수행하고있는 이유입니다. 각 열은 고정 된 길이 여야합니다.

REPLACE(REPLACE(MLIS.REQUESTOR_FIRST_NAME,', MD',''),',MD','') 

REPLACE(REPLACE(MLIS.REQUESTOR_LAST_NAME,', MD',''),',MD','') 

은 어떻게 쿼리에서 이러한 REPLACES을 포함하고 단순화 않습니다

위의 쿼리에 추가

, MLIS.REQUESTOR_FIRST_NAMEMLIS.REQUESTOR_LAST_NAME의 모든 발생을 위해 내가 할 필요가 전부?

귀하의지도와 친절한 도움에 감사드립니다.

답변

1

은 ... 구문에 도움이되는 하위 쿼리를 사용

SELECT 
    LEFT(REQUESTOR_FIRST_NAME, fname_idx - 1) 
    , CharIndex(' ', LEFT(MLIS.REQUESTOR_FIRST_NAME, fname_idx - 1) + ' ') - 1) 
.. 
FROM (select CharIndex(' ', MLIS.REQUESTOR_FIRST_NAME + ' ') fname_idx, REQUESTOR_FIRST_NAME from... 
1

(당신이 좀 더있을 것이다) 하위 쿼리의 일반적인 비트를 선택합니다. 또한 CHAR()로 캐스팅하여 문자열을 지정된 길이로 자르고자를 수 있습니다.

나는 다음 당신이 원하는 것을 생각 :

SELECT cast(fname as char(25)) + ' ' + cast(lname as char(25)) 
from (select replace(replace(LEFT(MLIS.REQUESTOR_FIRST_NAME, 
            CharIndex(' ', MLIS.REQUESTOR_FIRST_NAME + ' ') - 1 
           ), 
          ',MD', ''), 
        ', MD', '') as fname, 
      replace(relpace(left(MLIS.REQUESTOR_LAST_NAME, 
            CharIndex(',', MLIS.REQUESTOR_LAST_NAME + ',') - 1), 
            CharIndex(',', LEFT(MLIS.REQUESTOR_LAST_NAME, 
                 CharIndex(',', MLIS.REQUESTOR_LAST_NAME + ',') - 1) + ',' 
                   ) - 1 
           ), 
          ',MD', ''), 
        ', MD', '') as lname 

그러나, 원래 쿼리를 수행하기 어렵다 및 구문 오류가있을 수 있습니다. 이 쿼리는 문제 해결에 대한 지침을 제공합니다. 또한 마지막 문자열이 올바른 길이인지 확인하기 위해 연결 문자열 뒤에 캐스팅을 넣습니다.

관련 문제