我被困在試圖修復這個錯誤,並且一直在它太久。我做了很多谷歌搜索和搜索這個網站,但似乎無法爲我找到正確的答案,即使這個問題有很多不同的變體。SQL將Access數據庫空值轉換爲空字符串
我正在寫一個前端GUI,使用VB.Net和後端的Access數據庫。該數據庫在我的合作伙伴表中的PartnerFirstName
,PartnerLastName
和Organization
中有NULL值。我將它們加載到我的應用程序中的Datatable中,以便用戶可以搜索它們。上週我發現一些合作伙伴(具有NULL值的合作伙伴)沒有加載。下面
代碼:
("SELECT IDPartner, IIF(ISNULL(PartnerFirstName),'',PartnerFirstName) as PartnerFirstName, IIF(ISNULL(PartnerLastName), '', PartnerLastName) AS PartnerLastName, IIF(ISNULL(Organization), '', Organization) AS Organization, " & _
"Address1, City, State, Zip, Country, Active " & _
"FROM tblPartner " & _
"WHERE IDPartner like '%" & txtPartnerID.Text & "%' AND " & _
" PartnerFirstName like '%" & txtFirstName.Text & "%' AND " & _
" PartnerLastName like '%" & txtLastName.Text & "%' AND " & _
" Organization like '%" & txtOrganization.Text & "%' AND " & _
" Address1 like '%" & txtStreet.Text & "%' AND " & _
" City like '%" & txtCity.Text & "%' AND " & _
" State like '%" & txtState.Text & "%' AND " & _
" Zip like '%" & txtZipCode.Text & "%' AND " & _
" Country like '%" & txtCountry.Text & "%' " & _
"ORDER BY IDPartner, partnerlastname, partnerfirstname", cn)
的原因like
s爲,因爲我想搜索實時基於窗體的文本框的值更新。這是我的問題的來源,因爲它們默認爲空白,而數據庫有空值。
===================
編輯:
感謝的初步意見。我現在意識到我正在使用不正確的功能。 Baro建議的IIF現在讓我通過SQL,這非常棒!
看來我遇到的記錄沒有顯示的問題在我的WHERE子句中。如果我刪除它,那麼所有記錄都會加載到我的Datatable中。當我如圖所示包含Where子句時,記錄將排除NULL值。
我試過使用OR PartnerFirstName IS NULL
(以及其他字段),但是會留下太多額外的結果,也有NULL值。我不知道該怎麼做才能進行搜索,現在我知道問題出在聲明的Where部分。
它是SQL Server還是Access?它們不是同一件事。您鏈接的MSDN文章適用於SQL Server。在Access中,相當於Nz函數。 – Rabbit
嘗試:IIF(ISNULL(PartnerFirstName),'',PartnerFirstName)...然後糾正您的第一個錯誤,您錯過了「AND」。 – Baro
您需要查看針對Access執行的查詢;訪問沒有第二個參數ISNULL – techspider