anameというフィールドを1つだけ含むFinalForgottenというテーブルがあります。フィールドは、Smith John または Smith,John のいずれかになります。したがって、姓と名の両方が同じフィールドにあり、スペースまたはコンマで区切られています。防御フィールドには、first_name、last_name、middle_initial の 3 つのフィールドが含まれています。first_name フィールドには、名前フィールド内のデータ (John など) の一部と正確に一致するデータが含まれます。また、last_name フィールドには、name フィールドのデータ (例: Smith) と正確に一致するデータが含まれます。私はすべての FinalForgotten aname レコードをミドル イニシャルで新しいテーブルに取得しようとしています (たとえば、Smith、John S)。ディフェンス テーブルは、このミドル イニシャルを持つものです。
これはうまくいきます:
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 に、Smith John のようなコンマを含まないフィールドが含まれていると、「無効なプロシージャ コール」が返されます。
したがって、これに対処するために、コンマがフィールドにあるかどうかを考慮しようとしました。
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 という単語が強調表示されます。
返信ありがとうございます。