Programming/SQL

[Oracle] SELECT문 함수(1) - LENGTH / LENGTHB / INSTR / SUBSTR

Jayna. 2024. 1. 18. 10:08
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';

 

 

 

[Oracle] 이메일 ID만 조회, 주민등록번호 마스킹 처리 조회 / LPAD / RPAD

[Oracle] SELECT문 함수(1) - LENGTH / LENGTHB / INSTR / SUBSTR 더보기 1. 단일행 함수 N개의 값을 읽어서 N개의 값을 리턴 LENGTH(str) : 해당 전달된 문자열의 글자 수 반환 LENGTHB(str) : 해당 전달된 문자열의 바이

jaynarecord.tistory.com

 

[Oracle] SELECT문 함수(3) - LTRIM / RTRIM / TRIM

[Oracle] 이메일 ID만 조회, 주민등록번호 마스킹 처리 조회 / LPAD / RPAD [Oracle] SELECT문 함수(1) - LENGTH / LENGTHB / INSTR / SUBSTR 더보기 1. 단일행 함수 N개의 값을 읽어서 N개의 값을 리턴 LENGTH(str) : 해당 전

jaynarecord.tistory.com

 

[Oracle] SELECT문 함수(4) - 문자열 전부 다 소문자, 대문자, 앞글자만 대문자로 변경해서 조회 / LOWER

[Oracle] SELECT문 함수(3) - LTRIM / RTRIM / TRIM [Oracle] 이메일 ID만 조회, 주민등록번호 마스킹 처리 조회 / LPAD / RPAD [Oracle] SELECT문 함수(1) - LENGTH / LENGTHB / INSTR / SUBSTR 더보기 1. 단일행 함수 N개의 값을 읽

jaynarecord.tistory.com

 

[Oracle] SELECT문 함수(5) - 문자열 합치기(CONCAT) / 문자 바꾸기 (REPLACE) / 제거(REGEXP_REPLACE)

[Oracle] SELECT문 함수(4) - 문자열 전부 다 소문자, 대문자, 앞글자만 대문자로 변경해서 조회 / LOWER [Oracle] SELECT문 함수(3) - LTRIM / RTRIM / TRIM [Oracle] 이메일 ID만 조회, 주민등록번호 마스킹 처리 조회

jaynarecord.tistory.com

 

 

[Oracle] SELECT문 함수(6) - 숫자관련 함수 ABS/MOD/ROUND/CEIL/FLOOR/TRUNC

[Oracle] SELECT문 함수(5) - 문자열 합치기(CONCAT) / 문자 바꾸기 (REPLACE) / 제거(REGEXP_REPLACE) [Oracle] SELECT문 함수(4) - 문자열 전부 다 소문자, 대문자, 앞글자만 대문자로 변경해서 조회 / LOWER [Oracle] SELECT

jaynarecord.tistory.com

 

 

[Oracle] SELECT문 함수(7) - SYSDATE/MONTHS BETWEEN(DATE1,DATE2)/ADD_MONTHS(DATE,NUM)/LAST_DAY/EXTRACT /NEXT_DAY

[Oracle] SELECT문 함수(5) - 문자열 합치기(CONCAT) / 문자 바꾸기 (REPLACE) / 제거(REGEXP_REPLACE) [Oracle] SELECT문 함수(4) - 문자열 전부 다 소문자, 대문자, 앞글자만 대문자로 변경해서 조회 / LOWER [Oracle] SELECT

jaynarecord.tistory.com

 

 

[Oracle] SELECT문 함수(8) 형변환 함수 TO_CHAR(NUM/DATE) / TO_DATE(NUM,CHAR)/ TO_NUMBER(CHAR)

[Oracle] SELECT문 함수(7) - SYSDATE/MONTHS BETWEEN(DATE1,DATE2)/ADD_MONTHS(DATE,NUM)/LAST_DAY/EXTRACT /NEXT_DAY [Oracle] SELECT문 함수(5) - 문자열 합치기(CONCAT) / 문자 바꾸기 (REPLACE) / 제거(REGEXP_REPLACE) [Oracle] SELECT문 함수(4)

jaynarecord.tistory.com

 

 

[Oracle] SELECT문 함수(9) NULL 처리 함수/ NVL / NVL2 /NULLIF/DECODE/ CASE WHEN THEN구문 / 그룹함수(SUM/AVG/MIN/MAX/

[Oracle] SELECT문 함수(8) 형변환 함수 TO_CHAR(NUM/DATE) / TO_DATE(NUM,CHAR)/ TO_NUMBER(CHAR) [Oracle] SELECT문 함수(7) - SYSDATE/MONTHS BETWEEN(DATE1,DATE2)/ADD_MONTHS(DATE,NUM)/LAST_DAY/EXTRACT /NEXT_DAY [Oracle] SELECT문 함수(5) - 문자열

jaynarecord.tistory.com

 

728x90