declare @Name varchar(45)
SELECT
*
FROM
table law
WHERE
--law.emp = case when isnumeric(@Name) = 1 then @Name else null end
law.emp = case when isnumeric(@Name) = 1 then @Name end
or coalesce(law.lname + ', ' + law.fname, '') like '%' + @Name + '%'
Мой вопрос заключается в том, чтобы сосредоточиться на операторе CASE
, когда он вычисляет что-то отличное от числового значения ...
Если @Name
- это что-то отличное от числового значения, чтодействительно происходит?law.emp = null
???Если это так, то в любом случае он не должен возвращать никаких результатов, потому что правильный синтаксис выглядит примерно так: where law.emp is null
, верно?
Итак, просто для пояснения, мой столбец emp
фактически не содержит нулей.
Я просто пытаюсь выяснить, что действительно происходит с моим утверждением WHERE
, когда @Name
оценивает что-то не числовое ...
Какая фактическая оценка выполняется?SQL игнорирует условие?
Это то, что я хочу: чтобы SQL не что-либо делал с law.emp
, если @Name
не является числовым.(У меня есть другие условия, которые будут использовать переменную @Name
, если это текст.)