Выберите все строки, в которых столбец varchar преобразуется в десятичную - PullRequest
0 голосов
/ 24 апреля 2010

У меня есть столбец varchar, который, как правило, имеет десятичное значение, но иногда в этом поле есть некоторые символы мусора.

Возможно ли отфильтровать в предложении WHERE строки, которые успешно преобразуются в десятичное значение? Я использую sql-сервер 2005

1 Ответ

8 голосов
/ 24 апреля 2010

Одним из способов является ISNUMERIC функция:

select * from YourTable where ISNUMERIC(col1) = 1

Есть одна ошибка: isnumeric возвращает 1 всякий раз, когда строка может быть преобразована в любой числовой тип, включая money. Например, скажем, у вас есть строки, использующие различные десятичные разделители, такие как 7.9 и 7,9. Оба преобразуются в money, а isnumeric возвращает 1 для них обоих. Но только один преобразуется в decimal, в зависимости от языковых настроек SQL Server.

...