Есть ли лучший способ написать этот запрос для короткого замыкания 2-го условия? - PullRequest
0 голосов
/ 10 декабря 2011

Следующее похоже на мой запрос, который должен привести поле к типу и оценить его, и я хочу игнорировать строки, содержащие данные, которые нельзя преобразовать в целевой тип данных.

select * from MyTable
where case when isnumeric(SomeField) = 1 then SomeField else null end > 1

Таким образом, в приведенном выше примере я могу проверить значения, превышающие единицу, избегая ошибки преобразования, которая возникла бы, если бы в SomeField были нечисловые поля. Я в порядке с этим решением, но мне просто интересно, есть ли лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 27 декабря 2011

Я пришел к выводу, что нет лучшего способа сделать это.

1 голос
/ 14 декабря 2011

Я получаю сообщение об ошибке "Превышено максимальное целое значение" с использованием критериев where в вашем запросе. Хотя в моей базе данных есть несколько очень больших цифр, возможно, это не для вас.

Альтернатива, которая обрабатывает большие числа, перечислена ниже:

where isnumeric(SomeField) = 1 and convert(numeric(18,0),SomeField) > 1

Проверка isnumeric () должна выполняться до того, как convert () .

Производительность в том, что они примерно одинаковы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...