【发布时间】:2011-09-26 20:35:17
【问题描述】:
我正在尝试清理旧数据库中的数据,但多年来,FirstName 字段已被中间名和首字母污染。使用简单的 Left-Mid 查询,我可以轻松地将名称拆分为空格。但是当我尝试避免在实际上只有名字的条目上返回 #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 返回为 null。
在这两种情况下,Access 都会返回语法错误(缺少运算符)。基本的 Left-Mid 查询独立工作,我可以传递一个 WHERE 来获取有空格的条目。我只是在这里忘记了一些明显的事情吗?
【问题讨论】:
标签: sql ms-access ms-access-2007