我有一個列可以存儲文本,但用於存儲一個數字(我沒有製造系統!)有人已經把一個空值(即不是內容,但不空)及其導致的錯誤: -轉換數據類型(varchar)仍然顯示轉換錯誤
Msg 8114, Level 16, State 5, Line 1
Error converting data type varchar to numeric.
我有問題降低到以下: -
SELECT
T1.[FIELD_5],
ISNUMERIC(T1.[FIELD_5]),
NULLIF(T1.[FIELD_5],''),
ISNULL(NULLIF(T1.[FIELD_5],''),0),
CONVERT(DECIMAL(18,5),ISNULL(NULLIF(T1.[FIELD_5],''),0))
FROM
[MyTBL] T1
ORDER BY
ISNUMERIC(T1.[FIELD_5])
問題的數據是[FIELD_5]
- 我可以看到SQL認爲的不是數字的值
- 我可以看到
NULLIF
成功將其更改爲一個NULL
值 - 我可以看到
ISNULL
正在轉動NULLIF
結果0
但在CONVERT
上的錯誤消息ISNULL
結果的結果,我希望它導致0.00000
SQL服務器的什麼版本?在以後的版本中,您可以使用TRY_PARSE – DhruvJoshi
您確定沒有空格或不可打印的字符嗎?你知道'ISNUMERIC()'的侷限性嗎? – HoneyBadger
我無法解釋它是如何被捕獲的,但我已經給出瞭解釋'1E-07'的解釋,並將其視爲數字。 –