Cómo determinar el valor de campo que no se puede convertir a (decimal, float, int) en SQL Server

Tengo una base de datos de SQL Server.

Un campo tiene valores que son como

ID VALUE 1 NEGATIF 2 11.4 3 0.2 4 A RH(+) 5 ----- 6 >>>>> 7 5.6< 8 -13.9 

Quiero CONVERTIR el campo VALOR en campos decimales, por supuesto convertibles.

  1. ¿Qué tipo de statement SQL puede hacer esto?

  2. ¿Cómo puedo saber qué valor está provocando un error al convertir?

PD: Creo que esto puede resolver WHERE VALUE LIKE '[az]' pero ¿cómo puedo agregar más filtros como [- + ()]?

Llanura ISNUMÉRICA es basura

  • Cadena vacía, + , - y . son todos validos
  • Entonces es +. etc
  • 1e-3 es válido para float pero no decimal (a menos que CAST flote luego a decimal)

Para una solución particularmente críptica pero a prueba de fallas, agregue e0 o .0e0 luego use ISNUMERIC

 SELECT ISNUMERIC(MyCOl + 'e0') --decimal check, ISNUMERIC(MyCOl + '.0e0') --integer check 

Asi que

 SELECT ID, VALUE, CAST( CASE WHEN ISNUMERIC(VALUE + 'e0') = 1 THEN VALUE ELSE NULL END AS decimal(38, 10) ) AS ConvertedVALUE FROM Mytable