Oracle

Oracle 글자 찾는 함수 LENGTH, INSTR, LIRIM, RTRIM, TRIM

우아개발자 2023. 11. 10.

Oracle 글자 찾는 함수 INSTR, LITRM에 대해서 이야기 해보도록 하겠습니다. 우리가 문자의 시작 위치를 반환하거나, 아니면 데이터의 값이 어느 위치에 있는지 반환하고자 할 때 사용하는 함수는 많지만, 많은 데이터를 처리할 때 필요한 함수를 기억하는 것도 괘 좋은 방법이겠죠. 그래서 오늘은 INSTR과 LTRIM 그리고 RITRIM에 대해 정리해보았습니다.

Oracle

서론

LENGTH : 문자의 길이를 찾을 수 있는 함수

LENGTH는 문자의 길이를 찾을 수 있는 함수로서, 사용하는 방법은 간단합니다. SELECT문에 찾고자 하는 컬럼명을 기재해주면 되는데요. 아래의 코드를 참조해주세요. ex) employee 테이블에 있는, 이메일 컬럼의 길이를 찾고싶다고 한다.

SELECT
	length(email) --length(컬럼명)
FROM
	employee; --테이블명

 

본론

1. INSTR : 지정한 위치부터 지정한 숫자번째로 나타나는 문자의 시작 위치를 반환하는 함수

(1) String : 문자 타입을 작성하거나, 컬럼명 혹은 문자열을 작성해줍니다.

(2) str : 찾으려는 문자열을 입력해줍니다. 찾으려는 문자열은 외따옴표로 작성해주도록 합니다.

(3) position : 설정한 값이 없을 때  찾는 위치의 시작 값을 의미합니다. 음수로 작성한다면 문자열 뒷부분부터, 문자열이           시작되는 방향으로 데이터를 찾습니다. 

(4) 위치는 문자열의 몇 번째로 위치한 것인지 작성해줍니다.

INSTR(String,Str,position,위치)

FROM
	테이블명

 

1-1 위와 같이 INSTR을 사용해서 데이터를 찾게되면 발생하는 문제점이 있다면 SQL에서는 이러한 코드를 작성하게 되면 한 행씩 접근을 하기 때문에 광범위한 데이터를 찾는 작업을 할 때는 속도가 느려질 수 있다는 점입니다.

 

이를 보완하기 위해서 index 함수를 사용하게 되는데, index 함수를 사용하고, 혹은 이에 대한 이해를 하려면 자료구조의 '트리 구조'를 먼저 알아야합니다.

 

트리구조에 대한 설명은 본 블로그 안의 검색란에 Oracle 트리구조 를 검색해주세요.

 

 

2. LTRIM / RTRIM

함수 : 문자열의 좌/우측 공백을 제거하고, 좌/우측의 반복적인 문자를 제거하는 함수입니다.

함수의 공식은 아래와 같습니다.

(1) String : 문자 타입을 작성하거나, 컬럼명 혹은 문자열을 작성해줍니다.

(2) str : 찾으려는 문자열을 입력해줍니다. 찾으려는 문자열은 외따옴표로 작성해주도록 합니다.

LTRIM(String,str)
RTIRM(String,str)

 

2-1 LTRIM / RTRIM 함수의 예제 : 휴대폰 번호를 제거하고 나머지 문자를 구하세요.

저는 미리 employee 테이블에, phone 컬럼과 email 컬럼을 만들어놨습니다. 아래와 같이 코드가 실행된다면, phone 컬럼의 010은 삭제되어 결과값이 입력됩니다. 쉽게 말해 아래의 코드의 의미는 " phone컬럼에 있는 010 지워줘" 라고 생각하면 됩니다. 만일 여기서, 공백 값을 지우고 싶다면 FROM문에 DUAL을 사용하면됩니다.

* 공백을 지우고자 할 때는 두 번째 코드를 참조해주세요.

SLELECT
	ltrim(phone, '010'),
	rtirm(email, '@kh.or.kr')
FROM
	employee;

SELECT
	ltrim('      우아')
FROM
	DUAL;

3. TRIM : 오른쪽의 특정 문자를 제거하는 방법입니다.

TRIM은 오른쪽의 특정 문자를 제거할 때 사용하는 방법입니다. 연산자도 제거해줄 수 있다는 것이 특징인데요. 공백을 제거해줄 FROM dual을 사용합니다. 아래와 같이 말이죠.

TRIM('S', '문자를 제거할 값')
TRIM('S','문자를 제거할 값')
TRIM( LEADING | TRAILING | BOTH [CHAR] FROM STRING)

 

SLELCT RTRIM('155566','6')
,RTRIM('123FFF','F')
,RTRIM('167+','+')
FROM
DUAL

댓글