SELECT *
FROM [User]
WHERE CASE WHEN Value1 = 0 THEN 0 ELSE [Value2] / [Value1] END > 3
или даже лучше:
SELECT *
FROM [User]
WHERE [Value2] / NULLIF([Value1], 0) > 3
Деление на NULL
всегда безопасно.
Обратите внимание, что если в вашей таблице много [Value1] = 0
и индекс [Value1]
, то следующий запрос:
SELECT *
FROM [User]
WHERE [Value1] > 0
AND [Value2] / NULLIF([Value1], 0) > 3
, будет использовать индекс и просто пропустить неправильные значения.
На это, однако, не следует полагаться, и NULLIF
все равно следует использовать. Во всяком случае, это почти бесплатно.