고래씌

[Oracle] 2-1. DML(SELECT) - 함수_단일행 함수 ① (문자열 관련 함수) 본문

Database/Oracle

[Oracle] 2-1. DML(SELECT) - 함수_단일행 함수 ① (문자열 관련 함수)

고래씌 2023. 11. 23. 15:53

1. 함수 Function

- 자바로 따지면 메소드와 같은 존재
- 매개변수로 전달된 값들을 읽어서 계산한 결과를 반환 => 호출해서 쓸 것
    
단일행 함수 : n개의 값을 읽어서 n개의 결과를 리턴(매 행마다 함수를 실행하고 결과값 반환)
그룹 함수 : n개의 값을 읽어서 그룹의 개수만큼 결과를 리턴(하나의 그룹별로 함수 실행후 반환)
    
단일행 함수와 그룹함수는 함께 사용할 수 없다.   =>     결과행의 개수가 다르기 때문에

 

 


<단일행 함수>

---------- 문자열과 관련된 함수 ------------

2. (LENGTH / LENGTHB)

LENGTH(문자열) : 해당 전달된 문자열의 글자 수 반환
LENGTHB(문자열) : 전달된 문자열의 바이트 수 반환

 

결과값은 숫자로 반환 => NUMBER
문자열 : 문자열 형식의 리터럴이나 문자열이 저장된 칼럼을 제시

 

SELECT LENGTH('오라클!'), LENGTHB('오라클')
FROM DUAL;

 

DUAL => 가상테이블 : 산술연산이나 가상 칼럼등 값을 테스트 혹은 출력하기 위한 용도로 사용하는 테이블

 

 

3. INSTR

- INSTR(문자열, 특정문자, 찾을 위치의 시작값, 순번) : 문자열로부터 특정 문자의 위치값 반환

- 찾을 위치의 시작값과 순번은 생략 가능

 

▶ 찾을 위치의 시작값으로는 1 / -1 
    1 : 에서부터 찾겠다(기본값)
    -1 : 에서부터 찾겠다.

 

 

☞ 인덱스 처럼 글자의 위치를 찾는 것은 맞지만
☞ 자바처럼 0 부터 세느게 아니라 1부터 시작한다.

 

 

4. SUBSTR

- 문자열로부터 특정 문자열을 추출하는 함수
- SUBSTR(문자열, 처음위치, 추출할 문자 개수)

 

☞ 결과값은 CHARACTER타입으로 반환(문자열)
추출한 문자 개수는 생략 가능(생략시에는 문자열 끝까지 추출하겠다)
처음위치는 음수로 제시 가능 : 뒤에서부터 N번째 위치에서부터 문자를 추출하겠다.

 

 

 

▶ 주민등록번호에서 성별 부분을 추출해서 남자/여자를 체크

 

 

 

▶ 각 사원의 이메일에서 ID부분만 추출해서 조회.(사원이름, 이메일, 추출된 ID)

 

▶ EMPLYOEE에서 남자 사원들만 조회

 

 

5. LPAD / RPAD (덧붙이고자 하는 것)

- LPAD/RPAD (문자열, 최종적으로 반환할 문자의 길이, 덧붙이고자하는 문자)
  : 제시한 문자열에 덧붙이고자하는 문자를 왼쪽 또는 오른쪽에 덧붙여서 최종 N길이만큼의 문자열을 반환
    
☞ 결과값은 CHARACTER 타입으로 반환(문자열)
☞ 덧붙이고자하는 문자는 생략가능. (기본값 ' ')

 

 

SELECT LPAD(EMAIL, 16), EMAIL
FROM EMPLOYEE;

 

☞ 덧붙이고자하는 문자 생략시 ' ' 기본값이 공백임을 알 수 있음

 

 

 

▶ 주민등록번호 조회 : 621205-1234567 => 621235-1******

 

 

6. LTRIM / RTRIM (문자열, 제거시키고자하는 문자)

: 문자열의 왼쪽 또는 오른쪽에서 제거시키고자 하는 문자열들을 찾아서 제거한 나머지 문자열을 반환

 

SELECT LTRIM('      W   H  ALE        ') FROM DUAL;

 

☞ 기본값으로 ' '을 제거해준다.

 

SELECT RTRIM('0001230456000','0') FROM DUAL;

 

 

뒤에 000 이 사라짐

 

SELECT LTRIM('123123WH123', '123') FROM DUAL;

 

☞ 앞에 123123 사라짐

 

SELECT LTRIM('ACABACCKH', 'ABC') FROM DUAL;

 

문자를 하나하나 검사해보면서 이 문자가 A거나 B,C이면 지워줌

☞ 제거시키고자하는 문자열을 통으로 지워주는게 아니라 문자 하나하나가 다 존재하면 지워주는 원리

 

 

7. TRIM

TRIM(BOTH/LEADING/TRAILING '제거하고자하는 문자' FROM '문자열')


: 문자열의 양쪽/앞쪽/뒤쪽에 있는 특정 문자를 제거한 나머지 문자열을 반환

 

☞ 양쪽 공백 제거

 

 

 

8. LOWER / UPPER / INITCAP

- LOWER(문자열) : 문자열을 전부 소문자로 변경
- UPPER(문자열) : 문자열을 전부 대문자로 변경
- INITCAP(문자열) : 문자열에 들어가는 각 단어의 앞글자만 대문자로 변경

 

 

 

9. CONCAT

- CONCAT(문자열1, 문자열2) : 전달된 문자열 두개를 하나의 문자열로 합쳐서 반환

 

 

 

 

 

 

10. REPLACE

- REPLACE(문자열, 찾을문자, 바꿀문자) : 문자열로부터 찾을문자를 찾아서 바꿀문자로 바꾼 문자열 반환

 

▶ 각 사원의 이메일 주소를 kh.or.kr에서 iei.or.kr 변경된 문자열 출력