ISNUMERIC() не работает для десятичных чисел

Я использую функцию SQL Server 2008 R2 ISNUMERIC(), чтобы определить, является ли строка десятичной или нет. Возвращает "1", когда десятичная дробь запятая или запятая и точка. Я могу исправить эти проблемы, но этот запрос является частью отчета SSRS, который будет распространен среди многих пользователей, и я не могу исправить все проблемы.

Что я могу использовать вместо ISNUMERIC(), чтобы определить, является ли строка правильно сформированной десятичной дробью? Я не могу использовать TRY_PARSE(), потому что это доступно в SQL SERVER 2012, и я нахожусь на 2008 R2.

ОБНОВЛЕНИЕ Я хочу заменить ISNUMERIC() на PATINDEX(), чтобы идентифицировать десятичные дроби. Оба этих примера возвращают 0

SELECT PATINDEX('9,0', '%[0-9]%.%[0-9]%')
SELECT PATINDEX('9.0', '%[0-9]%.%[0-9]%')

Что я делаю неправильно?

1 ответ

Ваши значения параметров для PATINDEX являются обратными. Это должно работать для вас...

SELECT PATINDEX('%[0-9]%,%[0-9]%', '9,0')
SELECT PATINDEX('%[0-9]%.%[0-9]%', '9.0')

Ноэль

Другие вопросы по тегам