Practice/Oracle

Oracle_12. 문자함수_SUBSTR/ INSTR / REPLACE

밍미a 2022. 10. 11. 14:48
728x90

1.SUBSTR

문자열의 일부를 추출할때 사용한다.

함수 설명
SUBSTR(문자열데이터, 시작위치, 추출길이) 문자열 데이터의 시작 위치부터 추출 길이만큼 추출합니다. 시작 위치가 음수일 경우에는 마지막 위치부터 거슬러 올라간 위치에서 시작합니다.
SUBSTR(문자열데이터, 시작위치) 문자열 데이터의 시작 위치부터 문자열 데이터 끝까지 추출합니다. 시작 위치가 음수일 경우에는 마지막 위치부터 거슬러 올라간 위치에서 끝까지 추출합니다.
SELECT JOB , SUBSTR(JOB, 1, 2), SUBSTR(JOB, 3, 2),SUBSTR(JOB, 5)
FROM EMP

SUBSTR(JOB, 1, 2) = JOB의 1번째 글자에서 두글자 출력

 SUBSTR(JOB, 3, 2) =  JOB의 3번째 글자에서 두글자 출력

SUBSTR(JOB, 5) = 5번째 글자에서 끝까지 출력

결과값:

 

시작위치가 음수일 경우~~ 

SELECT JOB , SUBSTR(JOB, -1, 2), SUBSTR(JOB, -3, 2),SUBSTR(JOB, -5)
FROM EMP

SUBSTR(JOB, -1, 2) = JOB의 끝에서 첫번째 글자에서부터 2글자 출력

SUBSTR(JOB, -3, 2) = JOB의 끝에서 세번째 글자에서부터 2글자 출력

SUBSTR(JOB, -5) = 끝에서 5번째 글자에서부터 끝까지 출력

결과값:

 

SELECT JOB , 
    SUBSTR(JOB, -LENGTH(JOB)), 
    SUBSTR(JOB, -LENGTH(JOB),2), 
    SUBSTR(JOB, -3, 2)
FROM EMP

2.INSTR

문자열 데이터 안에서 틀정 문자 위치를 찾을 때 사용한다.

INSTR(
             대상 문자열 데이터,
             위치 찾으려는 부분 문자,
             위치 찾기 시작할 대상 문자열 데이터 위치(기본값은 1),
             시작 위치에서 찾으려는 문자가 몇 번째인지 지정 (기본값은 1)
)
SELECT INSTR('HELLO,ORACLE!', 'L') AS INSTR_1,
       INSTR('HELLO,ORACLE!', 'L', 5) AS INSTR_2,
       INSTR('HELLO,ORACLE!', 'L', 2, 2) AS INSTR_3
    FROM DUAL;

SELECT INSTR('HELLO,ORACLE!', 'L') AS INSTR_1,   // 'L'이 몇번째 위치에 있느냐~~
       INSTR('HELLO,ORACLE!', 'L', 5) AS INSTR_2,  // 'L'을 5번째 부터 검색할때, L이 몇번째 위치에 있느냐~~
       INSTR('HELLO,ORACLE!', 'L', 2, 2) AS INSTR_3   //'L'을 2번째 부터 검색할 때, 2번째 L의 위치를 찾아라~~
    FROM DUAL;

 

결과값:

SELECT *
    FROM EMP
WHERE   INSTR(ENAME,'S')>0;

SELECT *
    FROM EMP
WHERE   INSTR(ENAME,'S')>0; // ENAME에서 S가 하나라도 있는것을 찾아라~~

>> 즉, 이것은 LIKE '%S%'와도 같다.

결과값:

 

3.REPLACE

특정 문자열 데이터에 포함된 문자를 다른 문자로 대체할때 쓰인다.

REPLACE(문자열 데이터 또는 열이름 , 찾는문자, 대체할 문자)

 

SELECT '010-1234-5678' AS REPLACE_BEFORE,
        REPLACE('010-1234-5678','-',' ') AS REPLACE_1,
        REPLACE('010-1234-5678','-') AS  REPLACE_2
    FROM DUAL;

>> REPLACE_2 처럼 대체할 문자를 입력하지 않으면 지정한 문자는 문자열 데이터에서 삭제된다.

결과값: