MYSQL VARCHAR ROUND()

강민형·2020년 11월 27일
0
post-thumbnail

상품가격에 할인율을 적용해서 표현해야할 일이 있었는데 백의 자리에서 반올림 한 가격을 표현해야 했음

그래서 난 ROUND 함수를 이용해 할인율이 계산된 금액에 반올림처리를 했는데 반올림 처리가 제대로 되지 않는 문제가 생김

분명히 42000원이 계산되어 ROUND 함수에 들어갔는데 결과값이 42000원으로 뜨는 이상한 문제가 있었고 나는 왜 그런지 파악도 못하고 반올림을 서버단에서 해야하나? 이생각을 하고있었음

이렇게 하려고 보니 DB TABLE에 price 컬럼에 빈칸이거나 '-' 문자가 들어간 경우가 있어서 해결책이 되지 못함
그러고 생각한게 그럼 price 컬럼의 데이터타입이 int가 아닌 varchar라서 그런건가 하고 의심했고 이게 맞았음

이와같이 ROUND 함수에 varchar값을 넣게되면 반올림이 정상적으로 처리되지 않음
4번째 컬럼을 보면 반올림이 정상적으로 처리되어있으나 나머지 컬럼은 내림처리가 되있음
그래서 이를 해결하기 위해 계산된 결과값을 형변환 시켜줌

UNSIGNED 타입으로 형변환을 해주고 ROUND함수를 사용하니 정상적으로 반올림 처리가 된것을 확인할 수 있다

profile
Since 2020.11.02 / BackEnd Developer / SSAFY 3기

0개의 댓글