오라클 문자열 포함 여부 - olakeul munjayeol poham yeobu

오라클 문자열 포함 여부 - olakeul munjayeol poham yeobu

오라클 TB1 테이블에서

사람들의 이름(NAME)과 나이(AGE)

컬럼이 있는 것을 볼 수 있는데

LIKE를 사용해서

특정 문자를 포함하고 있을 경우에만

조회를 하려고 해 본다

LIKE는 WHERE절에서

WHERE 컬럼명 LIKE '%조건%'

와 같이 사용하는데

아래 예제를 통해 알아보자

오라클 문자열 포함 여부 - olakeul munjayeol poham yeobu

SELECT * FROM TB1

WHERE NAME LIKE '%영희'

를 쓴 것이 보이는데

LIKE에서 %를 앞에만 붙여주면

컬럼 안의 데이터가 영희로 끝나는 값만 가져온다

LIKE '%값' 은

값으로 끝나는 경우에만 가져온다는 것!

오라클 문자열 포함 여부 - olakeul munjayeol poham yeobu

SELECT * FROM TB1

WHERE NAME LIKE '박영%'

LIKE에서 %를 뒤에 붙여주면

컬럼 안의 데이터가 박영으로 시작하는 값만 가져온다

LIKE '값%' 은

값으로 시작하는 경우에만 가져온다는 것!

오라클 문자열 포함 여부 - olakeul munjayeol poham yeobu

마지막으로

SELECT * FROM TB1

WHERE NAME LIKE '%영수%'

는 %를 앞 뒤에 모두 넣었는데

이러면 영수가 들어간 값을

위치에 상관없이 모두 가져오게 된다

LIKE '%값%' 은

값이 들어있으면 가져온다는 것!

이제 정리해보자면

오라클에서 조회(SELECT) 시

WHERE에 LIKE를 사용해서

특정 값이 포함된 경우만 조회할 수 있는데

WHERE 컬럼명 LIKE '%값%'

과 같이 사용하며

LIKE '%값'

은 값으로 끝나는 경우에만 가져오고

LIKE '값%'

은 값으로 시작하는 경우에만 가져오고

LIKE '%값%'

은 값이 들어있으면 가져오게 된다

예제에 사용한 쿼리는 아래와 같다

SELECT * FROM TB1
WHERE NAME LIKE '이%' -- 이로 시작하는 경우에만

SELECT * FROM TB1
WHERE NAME LIKE '%영희' -- 영희로 끝나는 경우에만

SELECT * FROM TB1
WHERE NAME LIKE '%영수%' -- 영수가 들어있을 경우

오라클 문자열 포함 여부 - olakeul munjayeol poham yeobu

오라클 INSTR 문자열 문자 위치 찾기

INSTR 함수는 문자열에서 특정 문자열을 찾은 위치를 반환하는 함수입니다.

위치는 찾은 문자열의 첫번쨰 위치를 반환합니다.

INSTR 함수를 활용하는 방법

1. 문자열에서 특정 문자열의 위치를 찾을 경우

2. 특정 문자열에서 원하는 문자열까지 자르기가 필요한 경우(SUBSTR 활용)

INSTR 문법

INSTR('문자열' , '찾을문자열')

INSTR('문자열' , '찾을문자열' , '시작위치')

INSTR('문자열' , '찾을문자열' , '시작위치' , '발생횟수')

INSTR 예제

select    
    INSTR('WELCOME TO MY BLOG. TOO HOT', 'HI') as ex1 
    -- 찾는 단어가 없으면 반환값 0
    
    ,INSTR('WELCOME TO MY BLOG. TOO HOT', 'MY') as ex2 
    -- MY 단어의 위치를 반환값 12
    
    ,INSTR('WELCOME TO MY BLOG. TOO HOT', 'TO', 3) as ex3
    -- 인덱스 3부터 찾기 시작, 반환값 9
    
    ,INSTR('WELCOME TO MY BLOG. TOO HOT', 'TO', 3, 2) as ex4 
    -- 인덱스 3부터 찾기 시작 2번째로 찾은값 반환값 21
    
    ,INSTR('WELCOME TO MY BLOG. TOO HOT', 'TO', -2, 2) as ex5 
    -- 오른쪽 2번쨰부터 찾기 시작, 반환값 9 
FROM DUAL;
오라클 문자열 포함 여부 - olakeul munjayeol poham yeobu

설명 

INSTR('WELCOME TO MY BLOG. TOO HOT', 'HI')

WELCOME TO MY BLOG. TOO HOT 문자열에서 HI 를 찾습니다.

HI 문자가 문자열에 포함되지 않아 0을 리턴 합니다.


INSTR('WELCOME TO MY BLOG. TOO HOT', 'MY')

WELCOME TO MY BLOG. TOO HOT 문자열에서 MY 를 찾습니다.

MY 문자가 문자열에 12번째 위치하여 12를 리턴 합니다.


INSTR('WELCOME TO MY BLOG. TOO HOT', 'TO', 3)

WELCOME TO MY BLOG. TOO HOT 문자열에서 TO 를 찾습니다.

3번째 인덱스부터 찾기 시작하여 TO 문자가 문자열에 12번째 위치하여 12를 리턴 합니다.


INSTR('WELCOME TO MY BLOG. TOO HOT', 'TO', 3, 2)

WELCOME TO MY BLOG. TOO HOT 문자열에서 TO 를 찾습니다.

3번째 인덱스부터 찾기 시작합니다 TO 문자가 첫번쨰 찾은 위치가 10입니다.

하지만 2번째 문자열 위치를 찾기로 하여 지나갑니다.

두번쨰 문자열을 찾은 위치21번째 위치하여 21를 리턴 합니다.


INSTR('WELCOME TO MY BLOG. TOO HOT', 'TO', -2, 2) 

WELCOME TO MY BLOG. TOO HOT 문자열에서 TO를 찾습니다.

위치에 마이너스(-)가 입력이 되어 오른쪽부터 찾습니다.

오른쪽 2번째 인덱스부터 2번째에 위치한 TO를 찾습니다.

두번쨰 문자열을 찾은 위치 21번째 위치하여 21를 리턴 합니다.