2010-12-13 4 views
0

나는 aname이라는 하나의 필드만을 포함하는 FinalForgotten이라는 테이블을 가지고 있습니다. 필드는 Smith John 또는 Smith, John처럼 보일 수 있습니다. 따라서 마지막 이름과 름 이름은 같은 필드에 있으며 공백이나 쉼표로 구분됩니다. 방위 필드에는 first_name, last_name, middle_initial의 세 필드가 있습니다. first_name 입력란에는 데이터 IName 입력란 (예 : John)과 정확히 일치하는 데이터가 포함됩니다. 그리고 last_name 필드에는 aname 입력란 (예 : Smith)의 데이터 조각과 정확히 일치하는 데이터가 포함됩니다. 중간 머리 글자가있는 모든 FinalForgotten aname 레코드를 새 테이블 (예 : Smith, John S)로 가져 오려고합니다. 방어 테이블은이 중간 머리 글자를 가지고 있습니다.테이블의 필드에 공백이 있는지 또는 쉼표가 있는지 확인 - MS 액세스

SELECT left([aname],InStr(1,[aname],",")-1) & " "& right([aname],Len(aname)-InStr(1,[aname],",")) & " "& summary_judgment.middle_initial AS fullnameINTO FinalForgottenWithMiddle FROM FinalForgotten INNER JOIN summary_judgment ON((left(FinalForgotten.aname,InStr(1,FinalForgotten.[aname],",")-1))=summary_judgment.last_name) AND((right(FinalForgotten.aname,Len(FinalForgotten.aname)-InStr(1,FinalForgotten.[aname],","))=summary_judgment.first_name)); 

을 그러나 "잘못된 프로 시저 호출은"FinalForgotten 같은 쉼표가없는 필드 포함해야합니다 반환합니다 :

이 작동 할 스미스 존.

그러므로,이 문제를 해결하기 위해, I 쉼표 현장에 있었던 여부 인자 시도 :

SELECT left([aname], IIF(instr([aname], ",") = 0, InStr(1,[aname]," ")-1),InStr(1,[aname],",")-1) & ", " & right([aname], IIF(instr([aname], ",") = 0,Len(aname)-InStr(1,[aname]," "),Len(aname)-InStr(1,[aname],",") & " " & defense_final.middle_initial AS fullname INTO FinalForgottenWithMiddle 
FROM FinalForgotten INNER JOIN defense_final ON 
((right(FinalForgotten.aname,IIF(instr([aname], ",") = 0,Len(FinalForgotten.aname)-InStr(1,FinalForgotten.[aname]," ")),Len(FinalForgotten.aname)-InStr(1,FinalForgotten.[aname],","))=defense_final.first_name)) 
AND 
((left(FinalForgotten.aname,,IIF(instr([aname], ",") = 0,InStr(1,FinalForgotten.[aname]," ")-1)),InStr(1,FinalForgotten.[aname],",")-1))=defense_final.last_name); 

이 내게 "누락 연산자 구문 '오류 및 AS 단어를 강조하고있다.

응답 해 주셔서 감사합니다.

답변

0

괄호가 누락 된 것으로 보입니다.

SELECT left(
     [aname], 
     IIF(instr([aname], ",") = 0, 
     InStr(1,[aname]," ")-1, 
     InStr(1,[aname],",")-1 
     ) 
    ) 
    & ", " & 
    right(
     [aname], 
     IIF(instr([aname], ",") = 0, 
     Len(aname)-InStr(1,[aname]," "), 
     Len(aname)-InStr(1,[aname],",") 
     ) 
     ) 
    & " " & 
    defense_final.middle_initial AS fullname 
INTO FinalForgottenWithMiddle 
FROM FinalForgotten 
INNER JOIN defense_final 
ON 

    right(FinalForgotten.aname, 
    IIF(instr([aname], ",") = 0, 
    Len(FinalForgotten.aname)-InStr(1,FinalForgotten.[aname]," "), 
    Len(FinalForgotten.aname)-InStr(1,FinalForgotten.[aname],",") 
    ) 
    )=defense_final.first_name 

AND 

    left(FinalForgotten.aname, 
    IIF(instr([aname], ",") = 0, 
     InStr(1,FinalForgotten.[aname]," ")-1, 
     InStr(1,FinalForgotten.[aname],",")-1 
     ) 
    )=defense_final.last_name 
+0

감사합니다. 내가 검색어를 배치 한 방식도 좋았습니다. – JohnMerlino