两个几乎相同的 Access 查询,一个给出 'Invalid procedure call'

Two nearly identical Access queries, one gives 'Invalid procedure call'

运行正确:

select [feature number], 
len(mid([feature number],instr([feature number],"."))) > 2 from featuredata

这会产生 Invalid procedure call 错误:

select [feature number] from featuredata 
where len(mid([feature number],instr([feature number],"."))) > 2

feature number 是一个文本字段,但即使我阻止处理非数字值:

select [feature number] from featuredata 
where iif(isnumeric([feature number]),  
len(mid([feature number],
instr([feature number],"."))) > 2,false)

我仍然收到 Invalid procedure call 错误。为什么会出现此错误?

这是怎么回事:

如果instr([feature number],".")为0,那么你调用

mid([feature number], 0) ,这是无效的。

您不应该检查 iif 中的 isnumeric([feature number]),而是检查

instr([feature number],".") > 0

编辑:为什么第一个版本运行?

虽然它 运行s,但它应该 return #Function! 对于没有“.”的每一行。在 [feature number]。所以错误也发生在这里。