2014年7月1日 星期二

將資料類型從 varchar 轉換到 numeric 時發生錯誤

工程蝨企圖將 varchar 轉至 decimal(9,5) 發生錯誤

訊息 8114,層級 16,狀態 5,行 1
將資料類型從 varchar 轉換到 numeric 時發生錯誤。



官方文獻:

當非數值的 char、nchar、varchar 或 nvarchar 資料轉換成 int、float、numeric 或 decimal 時,SQL Server 會傳回一則錯誤訊息。當空字串 (" ") 轉換成 numeric 或 decimal 時,SQL Server 也會傳回一則錯誤。 
( CAST 和 CONVERT (Transact-SQL) )

雖然官方這樣說
可是工程蝨還是需要把 varchar 轉成 decimal(9,5)

試著排除 NULL,空字串 ' '
錯誤仍然存在

最後在網路上查到的解法,先用 PATINDEX 驗證資料,再進行轉換



T-SQL CodeSELECT  CASE WHEN PATINDEX('%[0-9]%', ColumnName) > 0  THEN convert(decimal(9,5),NULL) END

1 則留言: