2
我試圖清理舊數據庫中的數據,並且名字字段多年來一直受中間名&首字母的污染。使用簡單的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爲空。
在這兩種情況下,Access都會返回一個語法錯誤(缺少運算符)。基本的Left-Mid查詢是獨立工作的,我可以傳遞一個WHERE來獲取有空間的條目。我在這裏忘了一些明顯的東西嗎?
謝謝!那就是訣竅。 – briank
對不起 - 忽略回答你的問題的第二部分。我認爲NULLIF將在Access 2007中工作,但我不完全確定。我想當我在SQL Server上使用它之前。 – briank
IfNull()存在於其他SQL方言中,但不存在於Jet/ACE/Access中。 –