Как назначить нулевые значения в функции IIf в Access?
Я создаю вычисляемое поле (Field3) в запросе в MS Access. В этом примере Field2 содержит как числовые, так и символьные значения. Я хочу, чтобы Field3 содержал только числовые значения из Field2 и преобразовывал все символьные значения в значения Null, чтобы впоследствии я мог выполнять вычисления для Field3 как числового поля. Это в функции IIf, потому что я хочу, чтобы Field3 содержал только значения из Field2, если Field1 = "AA". Это то, что я пытался набрать в строке поля в представлении Query Design:
Field3: IIf([Field1]="AA",[Field2]*1,NULL)
Это работает за исключением случаев, когда Field2 является символьным значением, тогда Field3 читает "#Error" вместо того, чтобы быть пустым.
Каков правильный синтаксис для назначения значений NULL, если условие IIf не выполняется?
2 ответа
Если вы хотите, чтобы выражение вернулось [Field2]*1
только когда [Field1]="AA" и [Field2] содержит число, но в противном случае возвращает Null, используйте IsNumeric()
в состоянии...
IIf([Field1]='AA' And IsNumeric([Field2]), [Field2]*1, Null)
Если цель [Field2]*1
это бросить [Field2]
текстовое значение как число, вместо этого рассмотрим функцию Val()...
IIf([Field1]='AA' And IsNumeric([Field2]), Val([Field2]), Null)
Null
правильный синтаксис
Но, по крайней мере, в старой версии German Access, которая у меня есть на этом компьютере, мне нужно использовать точки с запятой вместо запятых в Query Design View.
Так ты можешь попробовать это?
Field3: IIf([Field1]="AA";[Field2]*1;NULL)
В SQL View синтаксис такой же, как в вашем вопросе:
SELECT IIf([Field1]="aa",[Field2]*1,Null) AS Field3
FROM TestTable;