簡體   English   中英

在SQL Server中將varchar轉換為數據類型數值的算術溢出錯誤

[英]Arithmatic overflow error converting varchar to data type numeric in sql server

我正在嘗試將數據從一個表插入到另一個表,但是我們面臨的問題是它給我們帶來了錯誤

Numeric value out of range: 8115 [Microsoft][ODBC Driver 11 for SQL Server][SQL Server ]Arithmetic overflow error converting varchar to data type numeric. (SQLExecDirect[8115] at /builddir /build/BUILD/php-5.6.30/ext/pdo_odbc/odbc_driver.c:247)

我們正在使用下面的查詢來插入數據

`INSERT INTO template_150  ([ClientName],[LOB],[PharmacyTotalClaimAmt])
 SELECT PharmacyID,ProductIDNDC
,  REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(decimal(10,2),CONVERT(varchar(10),CONVERT(varchar(10),LEFT
(SUBSTRING(REPLACE(TRIM(IngredCost),'\',''), PATINDEX('%[0-9.-]%',REPLACE(TRIM(IngredCost),'\','')),
 8000),PATINDEX('%[^0-9.-]%', SUBSTRING(REPLACE(TRIM(IngredCost),'\',''), PATINDEX('%[0-9.-]%',REPLACE
(TRIM(IngredCost),'\','')), 8000) + 'X') -1)) )
),'"',''),'$',''),',',''),'-','') AS [TRIM(IngredCost)]  
FROM file_5979bd211a3a9`

我找到了一些解決方案,可以在where條件下使用WHERE LEN(IngredCost )<=13函數,但是如果我們將使用此函數,那么我們將無法插入表file_5979bd211a3a9所有記錄,我們想保存的所有記錄表file_5979bd211a3a9 ,任何人都可以給我們解決方案,我們如何解決此錯誤?

您正在將10個字符的數字轉換為DECIMAL(10,2) 這意味着整個部分最多8位數字,小數部分最多2位數字。 如果整個數字中有8個以上的數字,則不能將其轉換為DECIMAL(10,2)

例如:

 select convert(decimal(10,2),'1000000000')

嘗試DECIMAL(12,2)或使用VARCHAR(8)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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