Я создаю несколько подготовленных операторов, которые используют параметризованные значения. В качестве примера:
SELECT * FROM "Foo" WHERE "Bar"[email protected]
Иногда @param
может быть NULL
. В таких случаях я хочу, чтобы запрос возвращал записи, где Bar
- NULL
, но указанный выше запрос этого не сделает. Я узнал, что для этого я могу использовать оператор IS
. Другими словами:
SELECT * FROM "Foo" WHERE "Bar" IS @param
Помимо различной трактовки NULL
, существуют ли другие способы, в которых эти два утверждения будут вести себя по-другому? Что, если @param
не NULL
, а вместо этого, скажем, 5
? Использует ли оператор IS
в этом случае безопасную (и нормальную) вещь? Есть ли другой подход, который я должен принять?