सादा ISNUMERIC बकवास है
- खाली स्ट्रिंग,
+
,-
और. सभी मान्य हैं
- तो
+.
आदि 1e-3
फ़्लोट के लिए मान्य है लेकिन दशमलव के लिए नहीं (जब तक कि आप फ़्लोट करने के लिए दशमलव तक नहीं जाते)
विशेष रूप से गुप्त लेकिन असफल समाधान के लिए, e0
. संलग्न करें या .0e0
फिर ISNUMERIC का उपयोग करें
SELECT
ISNUMERIC(MyCOl + 'e0') --decimal check,
ISNUMERIC(MyCOl + '.0e0') --integer check
तो
SELECT
ID, VALUE,
CAST(
CASE WHEN ISNUMERIC(VALUE + 'e0') = 1 THEN VALUE ELSE NULL END
AS decimal(38, 10)
) AS ConvertedVALUE
FROM
Mytable