2012-01-13 2 views
0

쿼리하려는 테이블 중 하나에 decimal(38,19) 필드가 있습니다. 내 perl DBI 모듈이 처리 할 수 ​​있도록 varchar으로 변환해야합니다. 어떻게 변환을 SQL로 작성해야 작동합니까? 나는 SQL Server Management Studio에서 실행하는 경우 특히, :SQL Server에서 long decimal 또는 float을 varchar로 변환하십시오.

select convert(varchar, 19040220000.0000000000000000000) 

를 내가 얻을 :

8115 메시지, 수준 16, 상태 5, 라인 데이터 유형 VARCHAR를 숫자로 변환 한
산술 오버플로 오류 .

내가 먼저 수의 반올림을 시도 :

select convert(varchar, round(19040220000.0000000000000000000, 0)) 

을하지만 그 중 하나가 (같은 오류 메시지가) 작동하지 않습니다. 사실 round()은 어떤 이유로 그 숫자에 영향을 미치지 않는 것 같습니다. 어떻게해야합니까? 고마워.

+0

는하지 마십시오 당신이 VARCHAR의 길이를 설정해야 , 즉. varchar (64)를 사용 하시겠습니까? –

답변

4

varchar의 길이를 지정하지 않으면 CONVERT 작업의 경우 기본값은 30 문자입니다.

38 자리의 10 진수를 수용 할만큼 길지 않습니다. 따라서 CONVERT 성명에 귀하의 varchar 길이를 적어주십시오!

이 시도 :

select convert(varchar(40), 19040220000.0000000000000000000) 
0

당신은 당신이 원하는 정밀도보다 큰 설정된 길이와 VARCHAR를 사용할 필요, 즉

select convert(varchar(64), 19040220000.0000000000000000000)