Я недавно столкнулся с этой проблемой и искал решение. Я думаю, что нашел два, и хотел опубликовать их здесь, чтобы другим было легче их найти.
Первое решение заключается в использовании регулярного выражения и функции SQLServer PATINDEX ()
IF PATINDEX('%[^0-9]%', @testString) = 0
Второе решение - объединить строку 'e0' с вашей тестовой строкой и по-прежнему использовать функцию SQLServer ISNUMERIC () с объединенной строкой. ISNUMERIC не может обнаружить присутствие символов, таких как d, e, x, из-за различных обозначений, используемых в числовых форматах, но все же допускает использование только одного символа. Таким образом, конкатенация 'e0' не позволяет функции выдавать вам ложное значение true, когда это когда-либо требуется.
IF (ISNUMERIC (@testString + 'e0') = 1)
Надеюсь, это поможет