[oracle] Function - 문자 함수

재현·2024년 6월 7일
post-thumbnail

🔍 함수

✍ 특정한 결과 값을 얻기 위해 데이터를 입력할 수 있는 특별한 명령어, 크게 내장형 함수사용자 정의 함수 로 나뉜다.

✍ 내장 함수 : 오라클 내부에서 기본으로 제공하는 함수, 단일행 함수와, 다중행 함수 로 나뉜다.
✍ 단일행 함수(Single-row-function) : 데이터가 한 행씩 입력되고, 입력된 각 행별로 결과가 하나씩 나오는 함수
✍ 다중행 함수(Multiple-row-function): 여러 행이 입력되어, 하나의 행으로 결과가 반환되는 함수

✍ 오라클에서 제공하는 내장 함수 중 문자 함수부터 먼저 알아보도록 하겠습니다.

🔍 문자 함수

✍ 말 그대로 문자 데이터를 조작하고 처리하는 함수

🔍 INITCAP, UPPER, LOWER 함수

함수설명
INITCAP(문자열)괄호 안 컬럼의 데이터 또는 문자열을 첫글자는 대문자, 나머지는 소문자로 출력
UPPER(문자열)괄호 안 컬럼의 데이터 또는 문자열을 모두 대문자로 출력
LOWER(문자열)괄호 안 컬럼의 데이터 또는 문자열을 모두 소문자로 출력
-- 문자열 함수
-- INITCAP(첫 글자를 대문자로)
SELECT LAST_NAME, LOWER(LAST_NAME), INITCAP(LAST_NAME), UPPER(LAST_NAME)
FROM EMPLOYEES;

SELECT LAST_NAME, LOWER(LAST_NAME), INITCAP(LAST_NAME), UPPER(LAST_NAME)
FROM EMPLOYEES
WHERE LOWER(LAST_NAME) = 'austin';

🔍 LENGTH, LENGTHB 함수

함수설명
LENGTH(문자열)괄호 안 컬럼의 데이터 또는 문자열을 첫글자는 대문자, 나머지는 소문자로 출력
LENGTHB(문자열)괄호 안 컬럼의 데이터 또는 문자열을 모두 대문자로 출력

✍ 문자열 길이를 구하는 함수

-- LENGTH (괄호 안 컬럼의 데이터 또는 문자열 길이 반환)
SELECT FIRST_NAME, LENGTH(FIRST_NAME)
FROM EMPLOYEES;

-- LENGTHB (괄호 안 컬럼의 데이터 또는 문자열 바이트 수 반환)
SELECT FIRST_NAME, LENGTHB(FIRST_NAME)
FROM EMPLOYEES;

🔍 INSTR 함수

✍ 문자열 데이터 안에서 특정 문자 위치를 찾는 함수

INSTR([대상 문자열 데이터(필수)],
      [위치를 찾으려는 부분 문자(필수)],
      [위치 찾기를 시작할 대상 문자열 데이터 위치(시작 위치)(선택) - default 1],
      [시작 위치에서 찾으려는 문자가 몇 번째인지 지정(선택) - default 1])
-- INSTR (해당 문자의 위치 반환)
SELECT FIRST_NAME, INSTR(FIRST_NAME, 'a'), 
INSTR(FIRST_NAME, 'a', 4) -- 문자열의 4번째 위치에서부터 시작해 'a'의 문자가 나온 위치 반환
FROM EMPLOYEES;

🔍 SUBSTR 함수

✍ 문자열 데이터 안에서 문자열 일부를 찾는 함수

SUBSTR([문자열 데이터 또는 열이름(필수)], [시작 위치(필수)])
SUBSTR([문자열 데이터 또는 열이름(필수)], [시작 위치(필수)], [추출 길이(선택)])
-- 만약 시작 위치가 음수일 때는 순서가 반대이다. 
-- 예로, 문자열 데이터가 'abcde', 시작 위치가 -3, 추출길이가 2이면 'cd'가 출력된다.
-- SUBSTR(ABCDE, 1, 3) ABCDE에서 첫 번째부터 3번째 부분 문자열 출력
SELECT FIRST_NAME, SUBSTR(FIRST_NAME, 1, 3)
FROM EMPLOYEES;

🔍 CONCAT 함수, || 연산자

✍ 두 개의 문자열 데이터를 합치는 함수

CONCAT([연결할 문자열 데이터 또는 열이름(필수)], [연결할 문자열 데이터 또는 열이름(필수)])
-- CONCAT(a, b) a, b의 문자열 연결
SELECT CONCAT(FIRST_NAME, LAST_NAME)
FROM EMPLOYEES;

SELECT FIRST_NAME || '-' || LAST_NAME AS FULL_NAME
FROM EMPLOYEES;

🔍 LPAD, RPAD 함수

✍ 데이터의 빈 공간을 특정 문자로 채우는 함수(특정 문자를 지정하지 않았을 때에는 빈 공간으로 채운다)

LPAD([문자열 데이터 또는 열이름(필수)], [데이터의 자릿수(필수)], [빈 공간을 채울 문자(선택) - default ' '])
RPAD([문자열 데이터 또는 열이름(필수)], [데이터의 자릿수(필수)], [빈 공간을 채울 문자(선택) - default ' '])
-- LPAD, RPAD 정의된 문장의 나머지 공간을 문자('-', '*')로 채움, 문자를 생략하면 빈 공간으로 채운다.
SELECT RPAD(FIRST_NAME, 10, '-') AS NAME, LPAD(SALARY, 10, '*') AS SAL
FROM EMPLOYEES;

🔍 TRIM, LTRIM, RTRIM 함수

✍ 특정 문자를 지우는 함수

TRIM([삭제 옵션(선택) - default BOTH], [삭제할 문자(선택) - default ' '] FROM [원본 문자열 데이터(필수)])2
-- LTRIM, RTRIM, TRIM
-- 첫 번째 문자열의 왼쪽부터 두 번째 문자들을 지워나간다. 'jav'로 해도 같은 값이 나온다.
SELECT LTRIM('Javaspecialist', 'Java') FROM DUAL;

-- 왼쪽 공백 삭제
SELECT LTRIM(' Javaspecialist') FROM DUAL;

-- 오른쪽 공백 삭제
SELECT RTRIM(' Javaspecialist  ') FROM DUAL;

-- 양쪽 공백 삭제
SELECT TRIM('  Javaspecialist  ') FROM DUAL;

🔍 REPLACE 함수

✍ 특정 문자열을 다른 문자열로 바꾸는 함수

REPLACE([문자열 데이터 또는 열 이름(필수)], [찾는 문자(필수)], [대체할 문자(선택) - default ''])
-- REPLACE 두 번째 문자열이 세 번째 문자열로 변경
SELECT REPLACE('Javaspecialist', 'Java', 'Bigdata') FROM DUAL;

🔍 TRANSLATE 함수

✍ 특정 문자를 다른 문자로 바꾸는 함수
✍ REPLACE 함수와 비슷하다고 생각할 수 있지만, TRANSLATE 함수는 문자 단위로 치환이 되기 때문에 함수를 여러번 사용하지 않아도 한 번에 치환이 가능하다.

REPLACE([문자열 데이터 또는 열 이름(필수)], [찾는 문자(필수)], [대체할 문자(선택) - default ''])
-- TRANSLATE a = 1, b = 2, c = 3, d = 4, e,f는 사라진다.
SELECT TRANSLATE('Javaspecialist', 'abcdef', '1234') FROM DUAL;

📖 reference

https://earth-95.tistory.com/149
https://gent.tistory.com/232
인프런 오라클 데이터베이스 강의

profile
운동과 코딩

0개의 댓글