2013. 8. 30. 00:01
[MSSQL]
미국의 통화는 달러.센트로 표현하기 때문에 소수점부를 사용한다.
그래서 moeny 타입은 소수점부에 값을 입력할 수 있다.
반면 한국의 통화는 소수점부를 사용하지 않는다.
따라서 money 타입에 값을 설정할 때에는 CEILLING() 함수나 FOOLR() 함수를 통해
정수값만 추출하여 설정하는 것이 안전하다.
간혹 money 타입의 소수점부에 값이 설정되어, 1원 이하의 차이로 인한 버그가 생길 때가 있다.
이럴 때는 소수점부에 값이 설정되어 있는지 조회해 봐야 한다.
declare @point money=12345.12345
select @point - floor(@point)
위와 같이 FLOOR() 함수를 통해 소수점부를 절사한 다음, 원래 값에서 빼주면, 소수점부 이하의 값만 남게 된다.
실제 레코드를 조회하는 방법은 아래와 같은 방식으로 한다.
select *
from points
where point - floor(point) > 0
위와 같이 조회하면 소수점부 이하에 값이 설정된 레코드만 추출될 것이다.
'MSSQL' 카테고리의 다른 글
MSSQL 곱셈-집계 함수 곱셈, SUM() 곱셈함수, row 곱셈, 특정필드 값 곱셈 (2) | 2014.06.12 |
---|---|
MSSQL SELECT 쿼리 LEFT JOIN 속도 개선 - left merge join (0) | 2013.11.14 |
MSSQL 차집합 구하기 (0) | 2013.11.14 |