DB/Oracle
Oracle DB - 문자열 함수 SUBSTR
진이최고다
2023. 4. 26. 23:13
SUBSTR
SUBSTR 함수는 문자열에서 일부 문자를 추출하는 Oracle SQL 함수이다.
SUBSTR(string, start_position, [length])
string: 추출할 문자열
start_position: 추출을 시작할 위치
첫 번째 문자는 1로 지정된다. length: 추출할 문자열의 길이이다.
이 인수를 생략하면 추출할 문자열의 끝까지 모든 문자를 반환한다.
예제
SELECT name, SUBSTR(birthday, 1, 6) AS birth_month_day FROM members;
쿼리는 members 테이블에서 각 행의 이름과 생년월일(birthday)에서 월과 일 정보만 추출하여 반환하는 예제이다.
SUBSTR(birthday, 1, 4): 생년월일에서 연도 정보만 추출하여 반환하는 코드 예) 2020-12-17 -> 20
SELECT name, SUBSTR(birthday, 1, 4) AS birth_year FROM members;
SUBSTR(birthday, 6, 2): 생년월일에서 월 정보만 추출하여 반환하는 코드 예 ) 2020-12-17 -> 12
SELECT name, SUBSTR(birthday, 6, 2) AS birth_month FROM members;
SUBSTR(birthday, 9, 2): 생년월일에서 일 정보만 추출하여 반환하는 코드 예 ) 2020-12-17 -> 17
SELECT name, SUBSTR(birthday, 9, 2) AS birth_day FROM members;
생년월일에서 월과 일 정보를 묶어서 반환하는 코드 예제
SELECT name, SUBSTR('birthday', 6, 2) || '/' || SUBSTR('20201217', 9, 2) AS birth_month_day
FROM members;
위 예제에서는 20201217' 문자열의 5번째 문자부터 2개 문자 '12'와 7번째 문자부터 2개 문자 '17'을 추출하여 '/' 문자로 묶어서 결과 세트에 반환한다.
예제
"회원중 생일 1월, 2월, 3월인 회원의 모든 정보를 출력하시오"
SELECT *
FROM members
WHERE SUBSTR(birthday, 6, 2) IN ('01', '02', '03');
예제
"회원중 생년월일을 입력하지 않은 회원의 정보를 출력하시오"
SELECT *
FROM members
WHERE birthday IS NULL;
위의 SQL 문에서 IS NULL 연산자는 birthday 값이 NULL인 모든 행을 반환한다.
이를 사용하여 생년월일이 입력되지 않은 회원을 필터링하고, SELECT 절에서 모든 컬럼을 반환한다.
유튜브 뉴렉쳐님의 Oracle 강의 기반으로 공부한 것을 작성한 블로그입니다.
출처 : 오라클(Oracle) SQL 강의 - 유튜브 뉴렉처