고래씌
[Oracle] 2-1. DML(SELECT) - 함수_단일행 함수 ① (문자열 관련 함수) 본문
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 변경된 문자열 출력
'Database > Oracle' 카테고리의 다른 글
[Oracle] 2-3. DML(SELECT) - 함수_단일행 함수 ③ (날짜 관련한 함수) (1) | 2023.11.24 |
---|---|
[Oracle] 2-2. DML(SELECT) - 함수_단일행 함수 ② (숫자 관련한 함수) (0) | 2023.11.23 |
[Oracle] 1-3. DML(SELECT) - 기본문법(연산자 우선순위, ORDER BY절) (0) | 2023.11.23 |
[Oracle] 1-2. DML(SELECT) - 기본문법(논리 연산자, BETWEEN AND, LIKE, IS NULL, IN, 연결 연산자) (0) | 2023.11.23 |
[Oracle] 1-1. DML(SELECT) - 기본문법(산술연산, 컬럼명 별칭, 리터럴, 컬럼명 별칭, DISTINCT, WHERE 절) (1) | 2023.11.23 |