Я застрял, пытаясь исправить эту ошибку и был у нее слишком долго. Я много сделал для Google и искал этот сайт, но не могу найти правильный ответ для меня, хотя есть много разных вариантов этого вопроса.SQL-преобразование DB DB-значение в пустую строку
Я пишу интерфейсный интерфейс с использованием VB.Net с базой данных Access на задней панели. БД имеет значения NULL в PartnerFirstName
, PartnerLastName
и Organization
в моей таблице партнеров. Я загружаю их в 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
с то, потому что я хочу найти обновление в режиме реального времени на основе значений текстового поля формы. Это источник моей проблемы, поскольку по умолчанию они являются пробелами, а в базе данных есть нули.
===================
EDIT:
Спасибо за начальные комментарии. Теперь я понимаю, что использовал неправильную функцию. 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) ... а затем исправьте свой первый, как будто вам не хватает «И». – Baro
вам нужно увидеть, что запрос выполняется в Access; Access не имеет второго параметра для ISNULL – techspider