ВОПРОС, ГДЕ ОБА ПОЛЕ НЕ СОДЕРЖИТ ЧТО-ТО

Я хочу запросить данные, в которых оба кода phone1 и phone2 не содержат слова "mobile". Пытались операторы AND и OR, но они не работают, когда в одном из полей существует "MOBILE".

    select ORDCON.* from PL00.dbo.ordhdr inner join PL00.dbo.ordhdrx on ordhdrx.ORDER_NO = ordhdr.ORDER_NO
                               INNER JOIN PL00.dbo.schedule on schedule.ID_VAL = ordhdr.ORDER_NO
                              left outer join PL00.dbo.ordcon on ordcon.ORDER_NO = ordhdr.ORDER_NO
where ordhdr.RSPNS_CODE = 'TXTB4'
and (schedule.[DATE] >= CONVERT(varchar(10), getdate(), 101)) 
AND (NOT ORDCON.PHONE1CODE = 'MOBILE' 
OR NOT ORDCON.PHONE2 = 'MOBILE')

1 ответ

Логика, которую вы хотите, это:

AND (ORDCON.PHONE1CODE <> 'MOBILE' AND ORDCON.PHONE2 <> 'MOBILE')

или, если не NULL:

AND 'MOBILE' NOT IN (ORDCON.PHONE1CODE, ORDCON.PHONE2)

Вы уверены, что вторая переменная не ORDCON.PHONE2CODE скорее, чем ORDCON.PHONE2? Я подозреваю правильную логику:

AND (ORDCON.PHONE1CODE <> 'MOBILE' AND ORDCON.PHONE2CODE <> 'MOBILE')
Другие вопросы по тегам