중요한 내용이 아닌
내가 헷갈리는 것만 정리한 것

1. SUBSTR
다른 프로그래밍 언어랑 달리 Oracle과 SQL에서 SUBSTR 함수의 인덱스는 1부터 시작. 즉, 문자열에서 첫 번째 문자는 인덱스 1임.
SUBSTR(string, start_position, [length])
start_position: 추출을 시작할 위치 (1부터 시작)
length: (선택적) 추출할 길이
SELECT SUBSTR('Hello World', 1, 5) AS Substring FROM dual;
위 쿼리에서 SUBSTR('Hello World', 1, 5)는 문자열 'Hello World'에서 첫 번째 문자부터 시작하여 5개의 문자를 'Hello' 추출
SELECT SUBSTR('블랙핑크제니', 3, 2) FROM DUAL;
//핑크
SELECT SUBSTR('블랙핑크제니', 3, 4) FROM DUAL;
//핑크제니
2. RTRIM / LTRIM
하나라도 포함되면 트림 수행해야 함.
[SAMPLE]
COL1 | COL2 |
ORACLE | DATABASE |
SQL | DEVELOPER |
[SQL]
SELECT LENGTH(TRIM(col1, 'LE')) + LENGTH(LTRIM(col2, 'DE')) AS result
FROM sample;
[쿼리 수행 결과]
RTRIM(COL1,'LE) | LTRIM(COL2,'DE') |
ORAC | ATABASE |
SQ | VELOPER |
[RESULT]
RESULT |
11 |
9 |
3. REPLACE
해당 글자를 한 번만 치환하는 게 아니라 해당 문자를 모두 치환 해야 함.
[SAMPLE]
COL1 |
ORACLE |
SQL |
[SQL]
SELECT REPLACE((REPLACE(COL1, 'L', 'A')), 'A') AS RESULT;
일단 COL1에서 모든 'L'을 'A'로 치환 후
모든 A 제거
** 첫번째로 나오는 L만 치환하는 거 아님. 모두 해야 되는게 중요
[RESULT]
RESULT |
ORCE |
SQ |
4. PAD
문자열이 설정한 길이가 될 때까지 왼쪽을 특정 문자로 채우는 함수
SELECT LPAD('JENNIE', 10, 'V') FROM DUAL;
// VVVVJENNIE
5. SIGN(수)
수의 부호를 반환하는 함수. 양수이면 1, 음수이면 -1, 0이면 0반환
SELECT SIGN(-7) FROM DUAL;
// -1
SELECT SIGN(7) FROM DUAL;
// 1
6. ROUND, TRUNC, CEIL, FLOOR
ROUND
지정된 자릿수 까지반올림
ROUND(163.76, -2)
// 200
-1 십의 자리까지 반올림
-2 백의 자리까지 반올림
TRUNC
지정된 자릿수까지 버림
SELECT TRUNC(54.29, 1) FROM DUAL;
// 54.2
SELECT TRUNC(54.29, -1) FROM DUAL;
// 50
CEIL
소수점 이하의 수를 올림한 정수 반환
수보다 크거나 같은 최소 정수 반환
음수 올림 -> 소수점 떼고 정수부는 그대로
SELECT CEIL(72,86) FROM DAUL;
// 73
SELECT CEIL(-33.4) FROM DUAL;
// -33
FLOOR
소수점 이하의 수를 버림한 정수 반환
수보다 작거나 같은 최대 정수 반환
음수 버림 -> 소수점 떼고 정수부+1
SELECT FLOOR(22.3) FROM DUAL;
// 22
SELECT FLOOR(-22.3) FROM DAUL;
// -23
⭐`CEIL` 함수는 주어진 숫자보다 크거나 같은 최소 정수를 반환, 주어진 숫자를 올림하여 가장 가까운 정수로 만든다.
⭐`FLOOR` 함수는 주어진 숫자보다 작거나 같은 최대 정수를 반환, 주어진 숫자를 내림하여 가장 가까운 정수로 만든다.
7. MOD
MOD(수1, 수2)
수1을 수2로 나눈 나머지 반환
⭐단, 수2가 0일 경우 수1 반환
⭐정수를 음수로 나누면 정수 반환
⭐두 인자값이 모두 음수이면 나머지도 음수
SELECT MOD(15, -4) FROM DUAL;
// 3
// 정수를 음수로 나누어도 나머지는 정수
SELECT MOD(-15, 0) FROM DUAL;
// -15
// 숫자2가 0이면 숫자1 반환
SELECT MOD(-15, -3) FROM DAUL;
// -3
// 두 인자값이 모두 음수이면 나머지도 음수 반환
8. 날짜함수 관련
SYSDATE/GETDATE
// SQL Server(MSSQL)은 GETDATE()
SELECT SYSDATE FROM DUAL;
// 시간까지 표시
// 2024-11-16 22:08:08
EXTRACT(YEAR/MONTH/DAY FROM SYSDATE)쓰면 특정 단위로 YEAR, MONTH, DAY 반환
ADD_MONTH
ADD_MONTH(날짜데이터, 특정개월수) 쓰면 특정 개월 수 더한 날짜를 반환. 날짜의 이전 달이나 다음 달에 기준 날짜가 존재하지 않으면 해당 월의 마지막 일자 반환
SELECT
ADD_MONTHS(to_date('2024-12-31', 'YYYY-MM-DD'), -1) AS Subtract_One_Month,
ADD_MONTHS(to_date('2024-12-31', 'YYYY-MM-DD'), 1) AS Add_One_Month
FROM dual;
// -- 2024-11-30
// -- 2025-01-31
'SQL&DataBase' 카테고리의 다른 글
[SQLD] JOIN (Inner, Outer, Self, Natural, Cross JOIN) (6) | 2024.11.17 |
---|---|
[SQLD] NULL 관련 함수, CASE, DECODE, SQL실행순서 (5) | 2024.11.16 |
[SQLD] 정규화, 반정규화 (36) | 2024.11.16 |
[SQLD] 데이터모델링의 이해 (6) | 2024.11.16 |
[Database] 정규화 쉽게 이해하기, 제1정규형, 제2정규형, 제3정규형, BCNF (1) | 2024.03.26 |
중요한 내용이 아닌
내가 헷갈리는 것만 정리한 것

1. SUBSTR
다른 프로그래밍 언어랑 달리 Oracle과 SQL에서 SUBSTR 함수의 인덱스는 1부터 시작. 즉, 문자열에서 첫 번째 문자는 인덱스 1임.
SUBSTR(string, start_position, [length])
start_position: 추출을 시작할 위치 (1부터 시작)
length: (선택적) 추출할 길이
SELECT SUBSTR('Hello World', 1, 5) AS Substring FROM dual;
위 쿼리에서 SUBSTR('Hello World', 1, 5)는 문자열 'Hello World'에서 첫 번째 문자부터 시작하여 5개의 문자를 'Hello' 추출
SELECT SUBSTR('블랙핑크제니', 3, 2) FROM DUAL; //핑크 SELECT SUBSTR('블랙핑크제니', 3, 4) FROM DUAL; //핑크제니
2. RTRIM / LTRIM
하나라도 포함되면 트림 수행해야 함.
[SAMPLE]
COL1 | COL2 |
ORACLE | DATABASE |
SQL | DEVELOPER |
[SQL]
SELECT LENGTH(TRIM(col1, 'LE')) + LENGTH(LTRIM(col2, 'DE')) AS result FROM sample;
[쿼리 수행 결과]
RTRIM(COL1,'LE) | LTRIM(COL2,'DE') |
ORAC | ATABASE |
SQ | VELOPER |
[RESULT]
RESULT |
11 |
9 |
3. REPLACE
해당 글자를 한 번만 치환하는 게 아니라 해당 문자를 모두 치환 해야 함.
[SAMPLE]
COL1 |
ORACLE |
SQL |
[SQL]
SELECT REPLACE((REPLACE(COL1, 'L', 'A')), 'A') AS RESULT;
일단 COL1에서 모든 'L'을 'A'로 치환 후
모든 A 제거
** 첫번째로 나오는 L만 치환하는 거 아님. 모두 해야 되는게 중요
[RESULT]
RESULT |
ORCE |
SQ |
4. PAD
문자열이 설정한 길이가 될 때까지 왼쪽을 특정 문자로 채우는 함수
SELECT LPAD('JENNIE', 10, 'V') FROM DUAL; // VVVVJENNIE
5. SIGN(수)
수의 부호를 반환하는 함수. 양수이면 1, 음수이면 -1, 0이면 0반환
SELECT SIGN(-7) FROM DUAL; // -1 SELECT SIGN(7) FROM DUAL; // 1
6. ROUND, TRUNC, CEIL, FLOOR
ROUND
지정된 자릿수 까지반올림
ROUND(163.76, -2) // 200
-1 십의 자리까지 반올림
-2 백의 자리까지 반올림
TRUNC
지정된 자릿수까지 버림
SELECT TRUNC(54.29, 1) FROM DUAL; // 54.2 SELECT TRUNC(54.29, -1) FROM DUAL; // 50
CEIL
소수점 이하의 수를 올림한 정수 반환
수보다 크거나 같은 최소 정수 반환
음수 올림 -> 소수점 떼고 정수부는 그대로
SELECT CEIL(72,86) FROM DAUL; // 73 SELECT CEIL(-33.4) FROM DUAL; // -33
FLOOR
소수점 이하의 수를 버림한 정수 반환
수보다 작거나 같은 최대 정수 반환
음수 버림 -> 소수점 떼고 정수부+1
SELECT FLOOR(22.3) FROM DUAL; // 22 SELECT FLOOR(-22.3) FROM DAUL; // -23
⭐CEIL
함수는 주어진 숫자보다 크거나 같은 최소 정수를 반환, 주어진 숫자를 올림하여 가장 가까운 정수로 만든다.
⭐FLOOR
함수는 주어진 숫자보다 작거나 같은 최대 정수를 반환, 주어진 숫자를 내림하여 가장 가까운 정수로 만든다.
7. MOD
MOD(수1, 수2)
수1을 수2로 나눈 나머지 반환
⭐단, 수2가 0일 경우 수1 반환
⭐정수를 음수로 나누면 정수 반환
⭐두 인자값이 모두 음수이면 나머지도 음수
SELECT MOD(15, -4) FROM DUAL; // 3 // 정수를 음수로 나누어도 나머지는 정수 SELECT MOD(-15, 0) FROM DUAL; // -15 // 숫자2가 0이면 숫자1 반환 SELECT MOD(-15, -3) FROM DAUL; // -3 // 두 인자값이 모두 음수이면 나머지도 음수 반환
8. 날짜함수 관련
SYSDATE/GETDATE
// SQL Server(MSSQL)은 GETDATE() SELECT SYSDATE FROM DUAL; // 시간까지 표시 // 2024-11-16 22:08:08
EXTRACT(YEAR/MONTH/DAY FROM SYSDATE)쓰면 특정 단위로 YEAR, MONTH, DAY 반환
ADD_MONTH
ADD_MONTH(날짜데이터, 특정개월수) 쓰면 특정 개월 수 더한 날짜를 반환. 날짜의 이전 달이나 다음 달에 기준 날짜가 존재하지 않으면 해당 월의 마지막 일자 반환
SELECT ADD_MONTHS(to_date('2024-12-31', 'YYYY-MM-DD'), -1) AS Subtract_One_Month, ADD_MONTHS(to_date('2024-12-31', 'YYYY-MM-DD'), 1) AS Add_One_Month FROM dual; // -- 2024-11-30 // -- 2025-01-31
'SQL&DataBase' 카테고리의 다른 글
[SQLD] JOIN (Inner, Outer, Self, Natural, Cross JOIN) (6) | 2024.11.17 |
---|---|
[SQLD] NULL 관련 함수, CASE, DECODE, SQL실행순서 (5) | 2024.11.16 |
[SQLD] 정규화, 반정규화 (36) | 2024.11.16 |
[SQLD] 데이터모델링의 이해 (6) | 2024.11.16 |
[Database] 정규화 쉽게 이해하기, 제1정규형, 제2정규형, 제3정규형, BCNF (1) | 2024.03.26 |