Ms access 检查表中的字段是否具有空格或逗号-MS访问权限
我有一个名为FinalForgotten的表,它只包含一个名为aname的字段。这个领域要么像史密斯·约翰,要么像史密斯·约翰。所以姓和名都在同一个字段中,并由空格或逗号分隔。防御字段包含三个字段:名字、姓氏、中间首字母。first_name字段将包含与aname字段中的数据完全匹配的数据(例如John)。last_name字段将包含与aname字段中的一段数据完全匹配的数据(例如Smith)。我正在尝试将所有带有中间首字母的FinalForgotten aname记录放入一个新表中(例如Smith、John S)。防御表就是这个中间的首字母 这将有助于:Ms access 检查表中的字段是否具有空格或逗号-MS访问权限,ms-access,syntax,operator-keyword,space,iif-function,Ms Access,Syntax,Operator Keyword,Space,Iif Function,我有一个名为FinalForgotten的表,它只包含一个名为aname的字段。这个领域要么像史密斯·约翰,要么像史密斯·约翰。所以姓和名都在同一个字段中,并由空格或逗号分隔。防御字段包含三个字段:名字、姓氏、中间首字母。first_name字段将包含与aname字段中的数据完全匹配的数据(例如John)。last_name字段将包含与aname字段中的一段数据完全匹配的数据(例如Smith)。我正在尝试将所有带有中间首字母的FinalForgotten aname记录放入一个新表中(例如Smi
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包含一个没有逗号的字段,它将返回“invalid procedure call”,如:
史密斯·约翰
因此,为了解决这个问题,我尝试考虑字段中是否有逗号:
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
感谢您的回复。似乎少了不少括号
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
谢谢,我也喜欢你提出问题的方式。