Я использую ANSI_NULLS
для ON
. Мне нужно обновить мой запрос, чтобы позволить параметру передать нулевое значение. Запрос, который у меня ниже, имеет оператор CASE
в JOIN
. SQL Server не нравится синтаксис.Как структурировать SQL-запрос, чтобы разрешить NULL
мне нужно иметь JOIN
искать значения NULL, если параметр @MyColumn
является NULL
или искать значение, которое было передано. С ANSI_NULLS
набором для ON
, я не могу просто установить MyColumn = @MyColumn
так NULL
приравнивает к НИЧЕГО. Я знаю, что мне нужно использовать синтаксис IS NULL
.
Как правильно отформатировать этот запрос, чтобы получить ожидаемые результаты?
SET ANSI_NULLS ON
GO
CREATE PROCEDURE MySampleProc
@MyColumn INT
AS
SELECT
t2.MyColumn
FROM
Table1 t1
JOIN
Table2 t2 ON t2.Table2PK = t1.Table2FK
AND CASE
WHEN @MyColumn IS NULL THEN MyColumn IS NULL
ELSE MyColumn = @MyColumn
END