我有一個表「Table1_201403」,帶有1個varchar列'列0'。現在,我想從這個表下面的查詢插入必要的數據Master_Table2 -錯誤'將數據類型varchar轉換爲數字時出錯' - 創建新表
SELECT '2014/03' AS Period
,ltrim(rtrim(SUBSTRING([Column 0], 1, 12))) AS 'Account'
,cast(ltrim(rtrim(SUBSTRING([Column 0], 17, 2))) + ltrim(rtrim(SUBSTRING([Column 0], 15, 2))) + ltrim(rtrim(SUBSTRING([Column 0], 13, 2))) AS DATE) AS Trans_Date
,CASE
WHEN ltrim(rtrim(SUBSTRING([Column 0], 30, 1))) = '-'
THEN CAST((CAST(ltrim(rtrim(SUBSTRING([Column 0], 19, 11))) AS DECIMAL)/100) AS DECIMAL(9, 2)) * - 1
ELSE CAST((CAST(ltrim(rtrim(SUBSTRING([Column 0], 19, 11))) AS DECIMAL)/100) AS DECIMAL(9, 2))
END AS Amount
INTO Master_Table2
FROM Table1_201403
WHERE SUBSTRING([Column 0], 11, 1) <> 'B'
當我嘗試這樣做,我得到的錯誤「錯誤轉換數據類型爲varchar到數字」。
什麼可以是一個合適的解決方案。任何幫助將不勝感激。
謝謝。
改性 -
SELECT '2014/03' AS Period
,ltrim(rtrim(SUBSTRING([Column 0], 1, 12))) AS 'GL Account'
,cast(ltrim(rtrim(SUBSTRING([Column 0], 17, 2))) + ltrim(rtrim(SUBSTRING([Column 0], 15, 2))) + ltrim(rtrim(SUBSTRING([Column 0], 13, 2))) AS DATE) AS Trans_Date
,case
when ltrim(rtrim(SUBSTRING([Column 0], 30, 1))) = '-'
THEN(
case when isnumeric(ltrim(rtrim(SUBSTRING([Column 0], 19, 11))))=1 then
CAST(CAST((CAST(ltrim(rtrim(SUBSTRING([Column 0],19,11))) AS decimal)/100) AS decimal(9,2)) AS decimal)*-1
else
CAST(CAST((CAST(ltrim(rtrim(SUBSTRING([Column 0],19,11))) AS decimal)/100) AS decimal(9,2)) AS varchar)*-1 end
)
ELSE(
case when isnumeric(ltrim(rtrim(SUBSTRING([Column 0], 19, 11))))=1 then
CAST(CAST((CAST(ltrim(rtrim(SUBSTRING([Column 0],19,11))) AS decimal)/100) AS decimal(9,2)) AS decimal)
else
CAST(CAST((CAST(ltrim(rtrim(SUBSTRING([Column 0],19,11))) AS decimal)/100) AS decimal(9,2)) AS varchar) end
)
END as Amount
INTO TABLE2
FROM TABLE1
WHERE SUBSTRING([Column 0], 11, 1) <> 'B'
我嘗試使用則IsNumeric邏輯。但無法讓代碼工作。請看一看。 @AdiŤ
並且,數據使用腳本@t_m是如下得到 -
列0 ValidDecimal 006125 01031400000451745+ JNLCIS批次2014年1月3日ÑBA0119 CL 1個 006125 01031400000212077+ JNLCIS批次01/03/2014 N BA0120 CL 1 006125 01031400000311569+ JNLCIS Batch 01/03/2014 N BA0119 PL 1
'什麼可以適當solution.'沒有錯誤消息告訴你嗎?停止嘗試將一個varchar插入到數字字段中。使用CAST或CONVERT將其轉換爲數字。 – 2014-08-29 17:49:10
我試圖將數字轉換爲數字,但沒有幫助。你能不能進一步幫助我? – 0nir 2014-08-29 18:00:14
使用IsNumeric邏輯編輯代碼但不起作用。 – 0nir 2014-08-29 19:05:11