Я использую Laravel 5.6.7 с драйвером сервера SQL, подключающимся к SQL Server 2014.
При попытке выполнить следующий запрос:
Warrant::where('vsStatus',632)
->whereNotIn('vsType',[-26927,-26929])
->whereNotIn('vsCategory',[-15723,-21708,-21708])
->where('Warrant.ORI','XXXXXXXXX')
->join('GlobalJacket','GlobalJacket.JacketID','=','Warrant.JacketID')
->where('GlobalJacket.JacketType','=',2)->get();
Я получаю обратно 2 набора результатов, где vsType = -19325 и где vsType = null
Это запрос, видимый отладочной панелью:
select * from [Warrant] inner join [GlobalJacket] on [GlobalJacket].[JacketID] = [Warrant].[JacketID] where [vsStatus] = '632' and [vsType] not in ('-26927', '-26929') and [vsCategory] not in ('-15723', '-21708', '-21708') and [Warrant].[ORI] = 'XXXXXXXXX' and [GlobalJacket].[JacketType] = '2'
И при вставке этого непосредственно в Management Studio 17 я получаю только 1 результат, где vsType = -19325
Теперь я мог бы легко включить нулевое значение в список значений whereNotIn, однако задумано ли это? Все вещи, которые считают «нулевым», отсутствуют в списке, однако почему MMS игнорирует нулевое значение, а красноречивое - нет?
Спасибо за помощь.