나의 개발일지

[SQL] 문자 함수 (단일 행 함수 1) 본문

Oracle SQL

[SQL] 문자 함수 (단일 행 함수 1)

YoonJuHan 2023. 4. 7. 17:48

함수의 개념

  1. 인수를 입력하면 함수가 적용된 결과를 반환
  2. 함수의 용도
    1. 데이터에 대해 계산을 수행할 경우
    2. 각각의 데이터 항목을 변경할 경우
    3. 출력할 날짜형식을 변경할 경우
    4. 출력할 숫자에 형식을 지정할 경우
    5. Column의 데이터 유형을 변경할 경우
    6. 행 그룹의 결과를 출력할 경우

단일행 함수

  1. 데이터를 조작해 보거나 데이터 유형 수정 가능
  2. 열 이름 또는 표현식이 인수
  3. 단일행 함수의 종류
    1. 문자 함수
    2. 숫자 함수
    3. 날짜 함수
    4. 변환 함수
    5. 일반 함수

문자 함수

  1. 문자를 입력 값으로 받으며 문자 또는 숫자 값을 반환
  2. 대소문자 조작 함수
    1. LOWER(char) : 대소문자 또는 대문자 문자열을 소문자로 변환
    2. UPPER(char) : 대소문자 또는 소문자 문자열을 대문자로 변환
    3. INITCAP(char) : 각 단어의 첫 문자는 대문자로, 나머지 문자는 소문자로 변환
  3. 문자 조작 함수
    1. CONCAT(char1, char2) : 지정된 두 문자를 결합
    2. SUBSTR(char, m, [n]) : 지정된 길이의 문자열을 반환
    3. INSTR(char1, char2, [m], [n]) : 지정된 문자가 존재하는 위치를 숫자로 표시
    4. LENGTH(char) : 문자의 개수를 반환
    5. LPAD(char1, n [,char2]) : 전체 길이 n에 대하여 char1을 오른쪽 정렬하고 빈곳을 char2로 채움
    6. RPAD(char1, n [,char2]) : 전체 길이 n에 대하여 char1을 왼쪽 정렬하고 빈곳을 char2로 채움
    7. REPLACE(char1, str1, str2) : 문자열의 특정 문자를 다른 문자로 변환
    8. TRIM(char2 FROM char1) : char1의 접두어 또는 접미어에 해당하는 char2를 잘라냄
    9. LTRIM(char1, char2) : char1의 왼쪽에서 char2를 제거
    10. RTRIM(char1, char2) : char1의 오른쪽에서 char2를 제거
  • 대소문자 조작
SELECT UPPER(email), LOWER(email), INITCAP(email)
FROM y_emp
WHERE emp_id < 1005;

 

  • WHERE 절에 단일 행 함수 사용 가능
SELECT emp_id, emp_name, salary, dept_id
FROM y_emp
WHERE LOWER(emp_name) = 'mark kim';

 

  • 사번이 1005번 미만인 사원의 이름과 직급을 결합하여 출력
SELECT CONCAT(emp_name, position)
FROM y_emp
WHERE emp_id < 1005;

 

  • SUBSTR 함수의 검색 위치를 지정하는 방식에 따른 결과의 차이
SELECT SUBSTR('Computer Information', 10, 4) result1,
       SUBSTR('Computer Information', -4, 4) result2
FROM dual;

 

  • 100번 부서 사원의 email에 소문자 'a'가 포함되는지 알아보기, 'a'가 있으면 위치값이, 없으면 0을 반환
SELECT emp_name, email, INSTR(email, 'a')
FROM y_emp
WHERE dept_id = 100;

 

  • 사원 이름의 오른 쪽, 급여의 왼쪽을 '*'로 채워서 출력
SELECT RPAD(emp_name, 10, '*'), LPAD(salary, 10, '*') 
FROM y_emp
WHERE dept_id = 100;

 

  • REPLACE 함수를 사용하여 주어진 문자를 다른 문자로 변환
SELECT emp_name, phone, REPLACE(phone, '.', '-') phone1
FROM y_emp
WHERE dept_id = 100;

 

  • LTRIM, RTRIM 함수는 지정된 문자를 따로 비교하여 a또는 b가 제거된다.
SELECT LTRIM('ababaaaBaXXXAbbbabab','ab'), 
       RTRIM('ababaaaBaXXXAbbbabab','ab')
FROM dual;

 

  • TRIM 함수는 선택적으로 접두어, 접미어를 지정하여 제거할 수 있으며 지정하지 않으면 양쪽 모두 제거
SELECT TRIM('w' FROM 'window'),
       TRIM(LEADING 'w' FROM 'window'),
       TRIM(TRAILING 'w' FROM 'window')
FROM dual;

 

'Oracle SQL' 카테고리의 다른 글

[SQL] 날짜 함수 (단일 행 함수 3)  (0) 2023.04.09
[SQL] 숫자 함수 (단일 행 함수 2)  (0) 2023.04.09
[SQL] ORDER BY (데이터의 정렬)  (0) 2023.04.07
[SQL] WHERE 절  (0) 2023.04.05
[SQL] SELECT 문  (0) 2023.04.04
Comments