Доступ к оператору IIf для извлечения значений

У меня есть экспорт Excel в Access 2007. Единственное, в чем я не совсем уверен, так это в том, что у меня есть значение, которое отображается как возраст, например «1-3», оно, очевидно, становится выше в зависимости от выбора клиента.

Мне нужны два оператора IIf: один для выбора данных перед «-» и один для после «-», может ли кто-нибудь помочь?


person LENBERT88    schedule 04.01.2012    source источник
comment
Вы имеете в виду, что у вас есть столбец, содержащий 1-3, и вы хотите сопоставить его с входами 1, 2 или 3? Если да, то fldFrom | fldTo будет лучше   -  person Alex K.    schedule 04.01.2012
comment
Привет, Алекс. Да, он содержит 1-3, и в экспорте я хочу, чтобы он был представлен двумя отдельными номерами: номер 1 в одном столбце и номер 3 в другом столбце.   -  person LENBERT88    schedule 04.01.2012


Ответы (1)


Ты мог

select
  T.agerange, 
  iif(agerange is null, "", left(agerange,instr(agerange,"-")-1)), 
  iif(agerange is null, "", mid(agerange,instr(agerange,"-")+1))
from T;

однако дизайн с двумя колонками был бы намного лучше.

person Alex K.    schedule 04.01.2012
comment
Что выше должно вернуть 1-3, 1, 3? - person Alex K.; 04.01.2012
comment
Я обновил, чтобы разрешить нули, это будет работать для форматов xxx-xxx, если это не так, вам нужно предоставить более подробную информацию о том, почему - person Alex K.; 04.01.2012
comment
IIf(IsNull([strAge]),,Left([strAge],InStr(1,[strAge],-)-1)) - person LENBERT88; 04.01.2012
comment
IIf(IsNull([strAge]),,Mid([strAge],InStr(1,[strAge],-)+1)) - person LENBERT88; 04.01.2012
comment
Я бы изменил второй iif с использования середины на следующее право (agerange,InStrRev(agerange,-)-1, это гарантирует, что он по-прежнему работает, если ваш возраст больше одной цифры. +1, тем не менее, поскольку это отличный отвечать. : ) - person Matt Donnan; 04.01.2012