SQL-запрос: выберите все строки, где [MyVariable] равен <= @MyVariable, или где MyVariable является текстом - PullRequest
1 голос
/ 22 марта 2011

Может ли кто-нибудь помочь мне разобраться с синтаксисом этого SQL-запроса? Вот что у меня так далеко.

SELECT ... WHERE (@MyVariable IS NULL OR [MyVariable] <= (CAST(@MyVariable as NUMERIC)))

Что мне действительно нужно, так это чтобы я мог выбрать все строки, где [MyVariable] равен <= @MyVariable, НО также есть 2 выборки текста. MyVariable может быть, в этом случае он всегда должен выбирать строку. Как это сделать, не получая ошибку приведения? </p>

1 Ответ

2 голосов
/ 22 марта 2011

Я думаю, вам нужно сделать пару искажений, чтобы заставить его работать ... но я думаю, что использование ISNUMERIC в сочетании с оператором case поможет:

SELECT ... WHERE 
@MyVariable IS NULL OR 
ISNUMERIC(@MyVariable) = 0 OR 
[MyVariable] < CASE 
                 WHEN IsNumeric(@MyVariable) = 1 
                     THEN CAST(@MyVariable as NUMERIC) 
                 ELSE 0 -- if you have negatives in your db go to max negative
             END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...