0
我有一个名为FinalForgotten的表,它只包含一个名为aname的字段。该领域可能看起来像史密斯约翰或史密斯约翰。所以最后和名字都在同一个字段中,并由空格或逗号分隔。防御字段包含三个字段:first_name,last_name,middle_initial。 first_name字段将包含完全匹配数据IN aname字段(例如John)的数据。 last_name字段将包含与aname字段中的一段数据完全匹配的数据(例如Smith)。我试图把所有的FinalForgotten aname记录与一个中间的首字母变成一张新表(例如Smith,John S)。防守表是这个中间名首字母。检查表中的字段是否有空格或逗号 - MS-Access
这会工作:
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包含不具有像一个逗号的字段: 史密斯约翰。
因此,要解决这个问题,我试图因素逗号是否是在外地或不:
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);
这给了我一个“缺少运算符语法”错误,并强调作为字。
感谢您的回复。
谢谢我也喜欢你布置查询的方式。 – JohnMerlino 2010-12-13 15:12:24