MySQL 소수점 관련 함수

stone tiger·2025년 2월 5일

MySQL

목록 보기
3/11

MySQL에서 소수점 연산과 관련된 함수는 여러 가지가 있습니다.

소수점 반올림, 올림, 내림, 소수점 자리수 조정 등의 기능을 수행하는 함수들을 정리해 보겠습니다. 🚀


✅ 1. 반올림 (ROUND())

SELECT ROUND(123.456, 2);  -- 결과: 123.46
SELECT ROUND(123.456, 0);  -- 결과: 123
SELECT ROUND(123.456, -1); -- 결과: 120

📌 설명

  • ROUND(number, decimals)
    • decimals는 소수점 이하 유지할 자리 수
    • 기본값은 0 (정수로 반올림)
  • -1을 넣으면 정수 자리에서 반올림 (예: 123 → 120)

✅ 2. 올림 (CEIL() 또는 CEILING())

SELECT CEIL(123.456);   -- 결과: 124
SELECT CEILING(4.1);    -- 결과: 5
SELECT CEIL(-4.7);      -- 결과: -4

📌 설명

  • CEIL()CEILING()은 동일
  • 소수점이 존재하면 항상 올림
  • 음수일 경우에도 올림 적용됨 (-4.7-4)

✅ 3. 내림 (FLOOR())

SELECT FLOOR(123.456);   -- 결과: 123
SELECT FLOOR(4.9);       -- 결과: 4
SELECT FLOOR(-4.2);      -- 결과: -5

📌 설명

  • 소수점을 항상 버림
  • 음수일 경우 더 작은 값으로 내림 (-4.2-5)

✅ 4. 절삭 (TRUNCATE())

SELECT TRUNCATE(123.456, 2);  -- 결과: 123.45
SELECT TRUNCATE(123.456, 0);  -- 결과: 123
SELECT TRUNCATE(123.456, -1); -- 결과: 120

📌 설명

  • TRUNCATE(number, decimals)
  • ROUND()와 달리 반올림 없이 숫자를 자름
  • decimals-1이면 정수 자리에서도 절삭

✅ 5. 나머지 (MOD() 또는 %)

SELECT MOD(10, 3);  -- 결과: 1  (10을 3으로 나눈 나머지)
SELECT 10 % 3;      -- 결과: 1  (동일한 연산)

📌 설명

  • MOD(a, b) 또는 a % b나머지를 반환
  • 소수점 숫자도 가능
SELECT MOD(10.5, 3);  -- 결과: 1.5

✅ 6. 랜덤 소수 (RAND())

SELECT RAND();         -- 예: 0.739832 (0~1 사이의 난수)
SELECT RAND() * 10;    -- 예: 7.39832 (0~10 사이 난수)
SELECT FLOOR(RAND() * 100); -- 예: 73 (0~99 사이 정수)

📌 설명

  • RAND()0 이상 1 미만의 난수를 생성
  • 특정 범위의 난수가 필요하면 RAND() * N 사용
  • 정수가 필요하면 FLOOR()로 내림

✅ 7. 소수점 자리수를 강제로 설정 (FORMAT())

SELECT FORMAT(1234.56789, 2);  -- 결과: '1,234.57'
SELECT FORMAT(1234.5, 3);       -- 결과: '1,234.500'

📌 설명

  • FORMAT(number, decimals)
  • 소수점 자리수를 지정하고, 천 단위 쉼표(,)를 포함
  • 결과가 문자열(STRING)로 반환

🚀 최종 정리

함수설명예제결과
ROUND(x, d)반올림ROUND(3.14159, 2)3.14
CEIL(x)올림CEIL(4.1)5
FLOOR(x)내림FLOOR(4.9)4
TRUNCATE(x, d)절삭 (버림)TRUNCATE(3.14159, 2)3.14
MOD(a, b) 또는 a % b나머지 연산MOD(10, 3)1
RAND()0~1 사이 난수RAND()0.739832
FORMAT(x, d)천 단위 콤마 포함한 숫자 형식 반환FORMAT(1234.567, 2)'1,234.57'

💡 어떤 경우에 어떤 함수를 사용해야 할까?

  • 정확한 반올림이 필요하면?ROUND()
  • 항상 올림해야 하면?CEIL()
  • 항상 내림해야 하면?FLOOR()
  • 소수점 이하 자르기 (버림)만 하고 싶다면?TRUNCATE()
  • 랜덤 숫자가 필요하다면?RAND()
  • 결과를 천 단위 콤마 포함한 형식으로 보고 싶다면?FORMAT()

🚀 소수점 연산을 다룰 때 위 함수들을 적절히 사용하면 더욱 효율적인 SQL을 작성할 수 있습니다!

0개의 댓글