Текст перед пробелом в запросе доступа

#ms-access

Вопрос:

Как я мог бы получить текст в строке перед пробелом — и избежать ошибки, если в строке нет пробела?

Например, если у меня есть поле имени с именами, которое выглядит следующим образом:

  • Джон С
  • Салли Кью
  • Томас Р.
  • Роберт
  • Мэри Джей

Я хочу, чтобы поле в запросе возвращалось:

  • Джон
  • Салли
  • Томас
  • Роберт
  • Мэри

Я попробовал использовать следующее поле в своем запросе, но оно по-прежнему возвращает пробел и символ после пробела:

 FName: Left([FirstName],IIf(Len(InStr([FirstName]," ")=0),Len([FirstName]),InStr([FirstName]," ")-1))
 

Спасибо!

Ответ №1:

Считать:

Left(FirstName, IIf(InStr(FirstName, " ")=0, Len(FirstName), InStr(FirstName," ")-1))

Или

IIf(InStr(FirstName, " "), Left(FirstName, InStr(FirstName, " ")-1), FirstName)

Это предполагает, что все записи следуют приведенным образцам примеров, а не чему-то вроде: Мэри Джо Р. Усложняется, если вы хотите Мэри Джо.

Комментарии:

1. Спасибо тебе @June7! И то, и другое сработало идеально.

Ответ №2:

Это сработает:

Left([First Name], IIf((InStrRev([First Name], " ", -1)-1)<= 0, Len([First Name]), InStrRev([First Name], " ", -1)-1))

Комментарии:

1. Спасибо, @Pflipper, ваше решение тоже сработало. Еще раз спасибо!