728x90
1. 단일행 함수
N개의 값을 읽어서 N개의 값을 리턴
LENGTH(str)
: 해당 전달된 문자열의 글자 수 반환
LENGTHB(str)
: 해당 전달된 문자열의 바이트 수 반환
=> 결과값은 NUMBER타입으로 반환
INSTR
INSTR(str, '특정문자', 찾을위치의 시작값, 순번) : 문자열로부터 특정문자의 위치값 반환
찾을위치의 시작값, 순번은 생략가능, 결과값은 NUMBER타입으로 반환
1 : 앞에서부터 찾겠다.(생략시 기본값)
-1 : 뒤에서부터 찾겠다.
SELECT INSTR('AABAACAABBAA', 'B')
FROM DUAL; -- 찾을위치, 순번 생략시 기본적으로 앞에서부터 첫번째 글자 검색
-- 결과값 3
SELECT INSTR('AABAACAABBAA', 'B', 1)
FROM DUAL; -- 해당 문자열의 앞에서부터 첫번째 B가 몇번째?
-- 결과값 3
SELECT INSTR('AABAACAABBAA', 'B', -1)
FROM DUAL; -- 해당 문자열의 뒤에서부터 첫번째 B가 몊번째?
-- 결과값 10
SELECT INSTR('AABAACAABBAA', 'B', 1, 2)
FROM DUAL; -- 해당 문자열의 앞에서부터 두번째 B가 몇번째?
-- 9
SELECT INSTR('AABAACAABBAA' ,'B', -1, 2)
FROM DUAL; -- 해당 문자열의 뒤에서부터 두번째 B가 몇번째?
-- 9
728x90
SUBSTR
SUBSTR(str, position, length)
=> 결과값은 CHARACTER 타입으로 반환
str : '문자열' 또는 문자 타입 컬럼
position : 시작위치값(음수 가능), position부터 추출한다.
length: 추출할 문자 개수(생략가능하며, 생략시 끝까지)
SELECT SUBSTR('SHOWMETHEMONEY', 7)
FROM DUAL;
-- THEMONEY
SELECT SUBSTR('SHOWMETHEMONEY', 5, 2)
FROM DUAL;
-- ME
SELECT SUBSTR('SHOWMETHEMONEY', 1, 6)
FROM DUAL;
-- SHOWME
SELECT SUBSTR('SHOWMETHEMONEY', -8, 3)
FROM DUAL;
-- THE
-- 주민등록번호(EMP_NO)에서 성별 부분을 추출해서 남자(1), 여자(2) 체크
SELECT EMP_NAME, SUBSTR(EMP_NO, 8, 1) 성별
FROM EMPLOYEE;
-- 여자사원들(주민번호 2,4)만 조회(사원명, 급여)
SELECT EMP_NAME, SALARY
FROM EMPLOYEE
WHERE SUBSTR(EMP_NO, 8, 1) IN ('2', '4');
-- 남자사원들(주민번호 1,3)만 조회(사원명, 급여)
SELECT EMP_NAME, SALARY
FROM EMPLOYEE
WHERE SUBSTR(EMP_NO, 8, 1) = '1' OR SUBSTR(EMP_NO, 8, 1) = '3';
728x90
'Programming > SQL' 카테고리의 다른 글
[Oracle] SELECT문 함수(3) - LTRIM / RTRIM / TRIM (0) | 2024.01.18 |
---|---|
[Oracle] SELECT문 함수(2) - 이메일 ID만 조회, 주민등록번호 마스킹 처리 조회 / LPAD / RPAD (0) | 2024.01.18 |
[Oracle] SELECT문 기본문법(4) - IS NULL / IN / 연결연산자( || ) / ORDER BY절 / 연산자 우선순위 (0) | 2024.01.17 |
[Oracle] SELECT문 기본문법(3) - 논리연산자(AND, OR) / BETWEEN AND / LIKE (0) | 2024.01.17 |
[Oracle] SELECT문 기본문법(2) - DISTINCT / WHERE절 / 비교연산자 (0) | 2024.01.17 |