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')
Ноэль