Предположим, что есть хранимая процедура с тремя параметрами. Из всех возможностей я хочу добиться этого с помощью одного предложения WHERE
, не выйдя из-под контроля, используя слишком сильно () AND () OR ()
...
Пример:
//Params
@CITY VARCHAR(100) = NULL,
@GENDER VARCHAR(100) = NULL,
@AGE VARCHAR(100) = NULL
Я предполагаю, что вы можете сделать это, используя IF BEGIN ... END
для каждой переменной, если существует, но это делает код намного дольше, чем нужно.
Этот метод ниже не будет работать, потому что он слишком длинный (есть около 10 различных полей, таких как этот, но пример - только 3.), и я не уверен, что он даже напрямую подтягивает отличительные значения...
SELECT NAME FROM TABLE
WHERE (
([email protected] AND [email protected] AND [email protected])
OR ([email protected] AND [email protected])
OR ([email protected] AND [email protected])
OR ([email protected] AND [email protected])
OR ([email protected])
OR ([email protected])
OR ([email protected])
)
Есть ли еще более эффективный способ сделать это?
Если да, желательно, чтобы метод также был совместим с JOIN.