[英]Error converting data type varchar to decimal, --data type errors
我正在更改一個視圖,以將地理坐標(具有不同十進制精度的數字)轉換為十進制字段。
我已經確認源表中唯一的項目是數字和小數-但我收到了錯誤
“將數據類型varchar轉換為數字時出錯。”
是否有可能將源表中的小數點讀取為字符,如果是這樣,我該怎么做才能成功執行此轉換?
ALTER VIEW [SCHEMA].[VIEW_V]
AS SELECT
cast(field 1 AS decimal (26,19)) as x_coord
FROM [linkedServer].[Sourcedatabase].[schema].[dt_table]
嘗試使用isnumeric()
或try_convert()
:
ALTER VIEW [SCHEMA].[VIEW_V] AS
SELECT (CASE WHEN isnumeric(field1) = 1
THEN cast(field1 AS decimal(26,19))
END)as x_coord
FROM [linkedServer].[Sourcedatabase].[schema].[dt_table];
要么
ALTER VIEW [SCHEMA].[VIEW_V] AS
SELECT try_convert(decimal(26, 19), field1)
FROM [linkedServer].[Sourcedatabase].[schema].[dt_table];
在結果值為NULL
,您將知道引起問題的行。
對於帶有字符“ e”,“ +”的浮點值,如果我們嘗試將其轉換為十進制,則會出錯。 ('2.81104e + 006')。 它仍然通過ISNUMERIC測試。
SELECT ISNUMERIC('2.81104e + 006')返回1。
SELECT convert(decimal(15,2),'2.81104e + 006')返回錯誤:將數據類型varchar轉換為數值時出錯。
SELECT try_convert(decimal(15,2),'2.81104e + 006')返回NULL。
SELECT convert(float,'2.81104e + 006')返回正確的值2811040。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.