簡體   English   中英

將數據類型varchar轉換為十進制,-數據類型錯誤時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM