database/Oracle
[Oracle] Singlerow_Number
솧이
2022. 8. 31. 22:24
ABS() | n의 절대값 | |
CEILING() | n보다 큰 수 중 가장 작은 정수 | |
FLOOR() | n보다 작은 정수 중 가장 큰 정수 | |
TRUNC() | TRUNC(12.345, 2) → 12.34 | 주어진 숫자를 버림 |
ROUND() | ROUND(12.345, 2) → 12.35 | n1을 n2의 십진 자리수로 |
MOD() | MOD(12,10) ,→ 2 |
n2로 n1을 나눈 나머지 값 |
POWER() | POWER(n1,n2) |
n1을 n2 제곱한 값 |
round() 함수
SELECT
'ROUND',
ROUND(12.34) "(12.34)", -- 소수점 1자리에서 반올림
ROUND(12.536) "(12.536)",
ROUND(12.536, 2) "(12.536, 2)", -- 소수점 3자리에서 반올림, 2자리까지 유지된다
ROUND(16.345, -1) "(16.345, -1)" -- 1의 자리에서 반올림 -> 20, 음수면 소수점 앞자리에서 반올림
FROM dual;
trunc() 함수
* TRUNC(12.345, -1) -> 결과는 1이 아닌 10
SELECT
'TRUNC',
TRUNC(12.345) "(12.345)", -- 소수점 자름 (디폴트)
TRUNC(12.345, 2) "(12.345, 2)", -- 소수점 3자리부터 자름
TRUNC(12.345, -1) "(12.345, -1)" -- 1의 자리부터 자름 -> 10이 나오네
FROM dual;
ROUND() TRUNC() CEIL() FLOOR() 함수 비교
SELECT
'12.5' "12.5",
ROUND(12.5) "ROUND", -- 13
TRUNC(12.5) "TRUNC", -- 12
CEIL(12.5) "CEIL", -- 13 큰 것 중 작은 것
FLOOR(12.5) "FLOOR" -- 12 작은 것 중 큰 것
FROM
dual;
SELECT
'-12.5' "-12.5",
ROUND(-12.5) "ROUND", -- -13
TRUNC(-12.5) "TRUNC", -- -12
CEIL(-12.5) "CEIL", -- -12
FLOOR(-12.5) "FLOOR" -- -13
FROM
dual;
mod() 함수
* oracle은 % 연산자가 없다
SELECT
MOD(12, 10),
MOD(12.6, 4.1)
FROM dual;
POWER() : 제곱
앞 콤마(,) : 코드 유지보수하기 좋다 오래된 언어일수록 마지막에 , 안되는 게 많다
SELECT
POWER(3, 2)
, POWER(-3, 3)
, POWER(10, -2)
, POWER(2, 1/2)
FROM dual;
* 조건에 따라 쿼리문이 바꿔야할 때가 있다 그럴 때마다 조립해야 한다
* 가변적인 조건을 위해 where 처음에
* 문자열 넣었다 뺏다 쉽지 않으므로 1 = 1 을 넣는다
SELECT *
FROM t_student
WHERE
grade = 1 AND height >= 170 AND weight <= 80
;
SELECT *
FROM t_student
WHERE
1 = 1
AND grade = 1
AND weight > 60
AND height < 190
;