Я не думаю, что вам нужно использовать ISNULL()
здесь, вместо этого вы ищете IS NULL
/ IS NOT NULL
. Сначала давайте посмотрим, почему вы получаете это сообщение об ошибке
Выражение не-логического типа, указанное в контексте, где ожидается условие, рядом с 'и'.
Вы получаете эту ошибку, потому что ( Isnull(phont.typedesc, 1) )
не является логическим выражением, и это то, что нужно предложению WHERE
(True или False).
Например: предположим, phont
НЕДЕЙСТВИТЕЛЕН, тогда ISNULL()
вернет 1, поэтому вы пишете cont.contactid = '29' AND 1 AND ...
.
- Что мне делать, чтобы получить эту ошибку?
Просто сделайте булево выражение как Isnull(phont.typedesc, 1) = 1
или как хотите вместо =1
, возможно, и другое, потому что не ясно, что вам нужно проверять.
Теперь использование ISNULL()
, как я вижу, указывает меньше, потому что возможные случаи, которые я вижу, выглядят следующим образом:
Isnull(phont.typedesc, 1) = 1
, затем напрямую phont IS NULL
.
Isnull(phont.typedesc, 1) <> 1
, затем напрямую phont IS NOT NULL
.
Isnull(phont.typedesc, 1) = AnyValue
, тогда почему бы не указать phont = value
или phont IN(<Values>)
, если вы ищете более 1 значения.