Gewoon ISNUMERIC is onzin
- Lege tekenreeks,
+
,-
en. zijn allemaal geldig
- Zo is
+.
enz. 1e-3
is geldig voor zwevend maar niet decimaal (tenzij u CAST om te zweven dan naar decimaal)
Voor een bijzonder cryptische maar faalveilige oplossing, voeg e0
. toe of .0e0
dan gebruik ISNUMERIC
SELECT
ISNUMERIC(MyCOl + 'e0') --decimal check,
ISNUMERIC(MyCOl + '.0e0') --integer check
Dus
SELECT
ID, VALUE,
CAST(
CASE WHEN ISNUMERIC(VALUE + 'e0') = 1 THEN VALUE ELSE NULL END
AS decimal(38, 10)
) AS ConvertedVALUE
FROM
Mytable