Я пытаюсь очистить данные в более старой базе данных, и поле FirstName было загрязнено отчествами и инициалами на протяжении многих лет. Используя простой левый-средний запрос, я легко могу разделить имена на пробелы. Но у меня возникают проблемы, когда я пытаюсь избежать возврата #ERROR для записей, которые на самом деле имеют только имя.
Я пытался использовать NULLIF. Идея заключалась в том, что если в имени не было пробелов, вернуть NULL в качестве второго имени и передать всю строку в FName.
SELECT MID([FirstName], NULLIF(INSTR([FirstName], " "), 0) AS [MName],
LEFT([FirstName], ISNULL(NULLIF(INSTR([FirstName], " "), 0),
LEN([FirstName])) AS [FName]
FROM Persons;
Я также пытался использовать оператор IIF - если в имени есть пробел, то проанализируйте его, иначе верните MName как ноль.
В обоих случаях Access возвращает синтаксическую ошибку (отсутствует оператор). Основной запрос Left-Mid работает сам по себе, и я могу передать WHERE, чтобы просто получить записи, где есть пробел. Я просто забыл что-то очевидное здесь?