varchar 열 'Column 0'이있는 테이블이 "Table1_201403"입니다. 자, 아래의 쿼리 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
그리고, 아래 스크립트 @t_m 사용했기 때문에되는 데이터 -
열 0 ValidDecimal 006125 01031400000451745+ JNLCIS 배치 2014년 1월 3일 N BA0119 CL 1 개 006125 01031400000212077+ JNLCIS 배치를 2014 년 1 월 3 일 N BA0120 CL 1 006125 01031400000311569+ JNLCIS 일괄 01/03/2014 N BA0119 PL 1
'어떤 적절한 solution.' 오류 메시지가 당신에게 말할합니까 될 수 있는가? 숫자 필드에 varchar를 삽입하는 것을 중지하십시오. CAST 또는 CONVERT를 사용하여 숫자로 변환하십시오. –
숫자로 캐스팅을 시도했지만 도움이되지 않았습니다. u 더 이상 나를 도울 수 있습니까. – 0nir
코드가 IsNumeric 논리로 편집되었지만 도움이되지 않습니다. – 0nir