MSSQL exponential varchar to int, numeric
안녕하십니까.
데이터 베이스 쿼리를 다루는 도중 사소하지만 귀찮은 데이터를 발견하여 그에 대한 포스팅을 해보려고 합니다.
데이터 베이스 쿼리를 다루는 도중 사소하지만 귀찮은 데이터를 발견하여 그에 대한 포스팅을 해보려고 합니다.
문제 상황
MS-SQL에 저장되어 있는 데이터가 아래와 같이 1E+26인 지수꼴의 형태로 표현되어 있는 경우가 있습니다.
이는 매우큰 자리를 지수꼴로 리턴하는 형식인데요. 코드상에서 받아오면 어찌되는지는 모르겠지만 디비 데이터를 보는 도중에 이렇게 리턴이 되면 트래킹하기 좀 귀찮아 집니다.
varchar to float
해당 데이터를 변환하기 위해서는 일단 float로 변환해야 합니다. 1E+26이 말그대로 varchar를 표현하고 있기 때문입니다.
select cast(data as float) as data from DBO..TABLE WITH(NOLOCK)
float numeric
위에서 float까지 변환해도 1E+26으로 표시되어 있습니다. 데이터 형식만 바꿨을뿐(1E+26) decimal의 형식으로 표현하라고 하지 않았기 때문 입니다.
이에 대하여 사용할 수 있는 데이터 형식은 numeric 입니다.
select convert(numeric(38,0),cast(data as float)) as data as data from DBO..TABLE WITH(NOLOCK)
결과
아래와 같이 원하는 형식으로 출력이 됩니다!
개꾸르
댓글
댓글 쓰기