#6 프로그래밍 개발자 교육 - SQL : 함수(function) 사용법 - 숫자
지난 교육에 이어 이번에는 숫자 데이터에 사용될 수 있는 function에 대해 교육을 이어 가겠습니다.
§ 숫자 function 들
▶ 나머지 구하기 - %, MOD, MOD()
MySQL 에서 나머지 값을 구할 수 있는 구문이 3가지가 있습니다. 보통 편한대로 쓰면 되겠지만, 저는 가급적 다른 DB에서도 호환되는 SQL을 쓰라고 권하고 싶습니다. 그리고 몫도 구할 수 있는데 그건 나누기를 하면 되는데 0으로 딱 떨어지는 경우에는 문제가 없겠지만 소수점이 나와버리는 경우도 있으니까 소수점이하를 절사해줄 수 있는 function을 써야 합니다.
▶ 절사 함수 - truncate()
위에서 몫을 구하기 위해 언급했던 truncate() 입니다. 아래는 4가지를 경우로 들어 설명을 드립니다. 가장 많이 쓰는 게 소수점 이하 절사입니다. 반올림이 아니라 버림입니다. 1은 소숫점 첫번째 자리수의 절사, 2는 소숫점 두번째 자리의 절사, 3은 세번째 자리의 절사를 의미합니다. 음수도 쓸 수 있는데 -1 은 1의 자리수를 절사하고 -2는 10의 자리수를 절사합니다. 그런데 여기서 아주 주의해야 할 것이 있습니다. Truncate는 다른 쓰임새도 있습니다. 바로 truncate 테이블명 으로 테이블에 있는 데이터를 싹 지워버리는 기능으로 사용할 수 있습니다. 데이터의 절사 겠네요. 게다가 이렇게 지우면 rollback 이라 해서 복구를 할 수 없기 때문에 주의를 기울여야 합니다만, select 와 같이 쓰는 경우에 그럴 일이 없으니 안심하세요.
▶ 반올림 함수 - round()
절사가 있으면 반올림도 있겠지요. 바로 round() 인데 두번째 인자가 truncate()와 동일합니다.
▶ 천정값 - ceil(), ceiling()
소수점 아래 평등한 값, 바로 소수점이 1일이라도 있으면 정수값을 올릴 때 ceiling()을 씁니다. ceil()은 synonym 으로 동일한 기능을 수행합니다.
▶ 바닥값 - floor()
천정값이 있으면 바닥값도 있습니다. floor()을 씁니다. 그런데 앞서 truncate() 와 자칫 중복될 수도 있는데 유의하셔야 합니다. 음수일 때 바로 차이가 납니다.
▶ 제곱 - pow(), power()
제곱을 구하기위해서는 pow()와 power()를 사용합니다. power()는 pow()의 synonym 입니다. 두번째 인자가 제곱횟수 가 됩니다.
음수제곱도 쓸 수 있습니다. 왠만한 현실에서 쓸일이 있을지 모르겠군요. 수학을 놓으신지 오래되신 저와 같은 분들이 있을지 몰라서요, 음수제곱의 계산하는 방법은 다음과 같습니다.
▶ 제곱근 - sqrt()
반대로 제곱근을 구할 대는 sqrt()를 상용하면 됩니다. 루트 2는 1.414, 루트 3은 1.732 이건 수포자인 저도 압니다.
▶ 절대값 - abs()
음수부호를 뗀 값을 구합니다.
▶ 천단위 구분 - format()
천단위 콤마 있는 서식으로 출력하기 위해서는 format() 을 사용합니다. 고정 소수점 포맷을 만들 때는 엑셀처럼 적용이 안되니 주의하셔야 합니다.
MySQL 숫자 function에서 제가 그나마 쓸 만한 것들만 추려봤는데요, 사실 실무에서 사용하는 Oracle에서는 쓴 유용한 것이 MySQL에서는 없는 것인지 못찾겠습니다. 그리고 삼각함수, Log, 자연상수 등 좀더 복잡한 것도 있는데 그건 어느 정도 MySQL에 익숙해 지시면 구글링으로 직접 찾아 보시길 권해 드립니다. 제가 아는 걸 설명해 드리는 취지에 어긋나서 적는 것을 포기했습니다.
이번 시간도 수고하셨습니다.