group function

그룹 함수 : 그룹으로 요약하기

  • 여러 행에 함수가 적용되어 하나의 결과를 나타내는 함수
  • 집계 함수라고도 함
  • GROUP BY : 기준 열에 대해 같은 데이터 값끼리 그룹을 묶고, 묶은 행의 집합에 대해 그룹 함수 연산이 필요한 경우, GROUP BY를 이용하여 처리
  • HAVING : 묶은 그룹에 대해 조건이 필요하다면 HAVING 절을 이용

1. 그룹 함수의 종류와 사용법

  • 굵게 표시된 부분은 필수 기본 문법

SELECT          그룹 함수(열 이름)
FROM              테이블 이름
[WHERE         조건식]
[ORDER BY   열 이름];

  • 그룹 함수의 종류
함수 설명 null처리
COUNT 행 개수를 셈 COUNT(salary) (*)의 경우 null 값도 개수로 셈
SUM 합계 SUM(salary) null 값을 제외하고 연산
AVG 평균 AVG(salary) null 값을 제외하고 연산
MAX 최댓값 MAX(salary) null 값을 제외하고 연산
MIN 최솟값 MIN(salary) null 값을 제외하고 연산
STDDEV 표준편차 STDDEV(salary) null 값을 제외하고 연산
VARIANCE 분산 VARIANCE(salary) null 값을 제외하고 연산

2. COUNT 함수

  • COUNT는 지정한 열의 행 개수를 세는 함수

    COUNT(열 이름)

(1) employees 테이블에서 salary 열의 행 수가 몇 개인지 세어서 출력하세요.
SELECT COUNT(salary) salary행수
FROM employees;

3. SUM, AVG 함수

  • SUM : 열의 합계
  • AVG : 열의 평균

    SUM(열 이름) / AVG(열 이름)

(1) employees 테이블에서 salary의 합계와 평균을 구해 보세요. 또한 AVG 함수를 사용하지 말고 평균을 구해보세요.

SELECT SUM(salary) 합계, AVG(salary) 평균, SUM(salary)/COUNT(salary) 계산된평균
FROM employees;

  • 실무 활용 팁 : AVG 합수는 null 값을 제외하고 연산함, null 값을 포함해서 평균을 계산해야 한다면 AVG(NVL(salary, o)) 형태로 계산해야 함

4. MAX, MIN 함수

  • 모든 데이터 타입에 적용 가능
  • 문자열의 경우 : 알파벳순, 날짜순 등으로 연산하여 결과를 출력함

MAX(열 이름) / MIN(열 이름)

(1) employees 테이블에서 salary의 최댓값과 최솟값, first_name의 최댓값과 최소값을 출력해 보세요.

SELECT MAX(salary) 최댓값, MIN(salary) 최솟값, MAX(first_name) 최댓값문자, MIN(first_name) 최솟값문자
FROM employees;

GROUP BY : 그룹으로 묶기

  • SELECT 절에 열 이름과 그룹 함수를 함께 기술했다면 GROUP BY 절을 반드시 사용해야 함
  • 그룹화는 열 이름 순서대로 수행됨
  • WHERE 절을 사용하면 GROUP BY 보다 먼저 적용됨
  • SELECT 절에 그룹 함수를 사용하지 않고 GROUP BY 절만으로도 사용할 수 있음

SELECT           기준 열, 그룹 함수(열 이름)
FROM              테이블 이름
[WHERE          조건식]
GROUP BY     열 이름
[ORDER BY    열 이름]

(1) employees 테이블에서 employee_id가 10 이상인 직원에 대해 job_id별로 그룹화하여 job_id별 총 급여와 job_id별 평균 급여를 구하고, job_id별 총 급여를 기준으로 내림차순 정렬하세요.

SELECT         jobid 직무, SUM(salary) 직무별총급여, AVG(salary) 직무별평균급여
FROM            employees
WHERE         employee_id >= 10
GROUP BY   job_id
ORDER BY   직무별
총급여 DESC, 직무별_평균급여;

  • 그룹에 대한 그룹이 필요한 경우

    GROUP BY 대그룹, 중그룹, 소그룹

SELECT          jobid job_id대그룹,
                        managerid manager_id중그룹,
                        SUM(salary) 그룹핑총급여,
                        AVG(salary) 그룹핑
평균급여,
FROM             employees
WHERE          employeeid >= 10
GROUP BY    job_id, manager_id
ORDER BY    그룹핑
총급여 DESC, 그룹핑_평균급여;

HAVING : 연산된 그룹 함수 결과에 조건 적용하기

  • HAVING 절은 그룹화된 값에 조건식을 적용할 때 사용(WHERE 절은 사용 불가)

SELECT           열 이름, 그룹 함수(열 이름)
FROM              테이블 이름
[WHERE          조건식]
GROUP BY     열 이름
[HAVING         조건절]
[ORDER BY    열 이름];

(1) employees 테이블에서 employees_id가 10 이상인 직원에 대해 job_id별로 그룹화하여 job_id별 총 급여와 job_id별 평균 급여를 구하되, job_id별 총 급여가 30000보다 큰 값만 출력하세요. 출력 결과는 job_id별 총 급여를 기준으로 내림차순 정렬하세요.

SELECT            jobid 직무, SUM(salary) 직무별총급여, AVG(salary) 직무별평균급여
FROM               employees
WHERE            employee_id >= 10
GROUP BY      job_id
HAVING           SUM(salary) > 30000
ORDER BY      직무별
총급여 DESC, 직무별_평균급여;

자료출처: 모두의 SQL

general function

반드시 알아둬야 할 일반 함수
1. NVL : NULL 값 처리하기

  • null은 그 자체로 ‘값이 없다’는 의미
  • 할당되지 않았거나 알려져 있지 않아 적용이 불가능한 값
  • 0이나 공백(space)과는 다름
  • null 값을 포함하는 산술 연산의 결과는 null

SELECT *
FROM employees
ORDER BY commission_pct;

NVL(열 이름, 치환 값)

(1) employees 테이블에서 salary에 commission_pct를 곱하되 commission_pct가 null일 때는 1로 치환하여 commission_pct를 곱한 결과를 출력하세요.

SELECT salary * NVL(commission_pct, 1)
FROM employees
ORDER BY commission_pct;

2. DECODE : 조건 논리 처리하기

  • IF-THEN-ELSE-END
  • 데이터 값이 조건 값과 일치하면 치환 값을 출력하고 일치하지 않으면 기본 값을 출력

    DECODE(열 이름, 조건 값, 치환 값, 기본 값)

(1) employees 테이블에서 first_name, last_name, department_id, salary를 출력하되 department_id가 60인 경우에는 급여를 10% 인상한 값을 계산하여 출력하고 나머지 경우에는 원래의 값을 출력하세요. 그리고 department_id가 60인 경우에는 ‘10% 인상’을 출력하고 나머지 경우에는 ‘미인상’을 출력하세요.

SELECT first_name,
                last_name,
                department_id,
                salary
                DECODE (department_id, 60, salary * 1.1, salary) 조정된급여,
                DECODE (department_id, 60, ‘10% 인상’, ‘미인상’) 인상여부,
FROM employees;

3. CASE 표현식 : 복잡한 조건 논리 처리하기

  • 등급, 나이, 지역, 날짜를 구분하여 출력 가능

CASE
                WHEN 조건 1 THEN 출력 값 1
                WHEN 조건 1 THEN 출력 값 2
                …
                ELSE 출력 값 3
END

(1) employees 테이블에서 job_id가 IT_PROG라면 employee_id, first_name, last_name, salary를 출력하되 salary가 9000 이상이면 ‘상위급여’, 6000과 8999 사이면 ‘중위급여’, 그 외는 ‘하위급여’라고 출력하세요.

SELECT employee_id, first_name, last_name, salary,
CASE
                WHEN salary >= 9000 THEN ‘상위급여’
                WHEN salary BETWEEN 6000 AND 8999 THEN ‘중위급여’
                ELSE ‘하위급여’
END AS 급여등급
FROM employees
WHERE job_id = ‘IT_PROG’;

4. RANK, DENSE_RANK, ROW_NUMBER : 데이터 값에 순위 매기기

RANK () OVER([PARTITION BY 열 이름] ORDER BY 열 이름)

  • 차이점
함수 설명 순위 예
RANK 공통 순위를 출력하되 공통 순위만큼 건너뛰어 다음 순위를 출력 1, 2, 2, 4, …
DENSE_RANK 공통 순위를 출력하되 건너뛰지 않고 바로 다음 순위를 출력 1, 2, 2, 3, …
ROW_NUMBER 공통 순위 없이 출력 1, 2, 3, 4, …

(1) RANK, DENSE_RANK, ROW_NUMBER 함수를 각각 이용해 employees 테이블의 salary 값이 높은 순서대로 순위를 매겨 출력해 보세요.

SELECT employeeid,
                salary,
                RANK()                  OVER(ORDER BY salary DESC) RANK
급여,
                DENSERANK()   OVER(ORDER BY salary DESC) DENSE_RANK급여,
                ROWNUMBER() OVER(ORDER BY salary DESC) ROW_NUMBER급여
FROM employees;

(2) RANK, DENSE_RANK, ROW_NUMBER 함수를 각각 이용해 employees 테이블 직원이 속한 department_id 안에서 salary 값이 높은 순서대로 순위를 매겨 출력해 보세요.

SELECT A.employeeid,
                A.department_id,
                B.department_name,
                salary,
                RANK()                 OVER(PARTITION BY A.department_id ORDER BY salary DESC) RANK
급여,
                DENSERANK()  OVER(PARTITION BY A.department_id ORDER BY salary DESC) DENSE_RANK급여,
                ROWNUMBER() OVER(PARTITION BY A.department_id ORDER BY salary DESC) ROW_NUMBER급여
FROM employees A, departments B
WHERE A.department_id = B.department_id
ORDER BY B.department_id, A.salary DESC;

자료출처: 모두의 SQL

Conversion function

1. 변환 함수

  • 데이터 값의 데이터 타입을 변환할 때 사용
  • 암시적 변환 : 오라클 데이터베이스 시스템에 의해 자동으로 변환
  • 명시적 변환 : 사용자에 의해 수동으로 변환

2. 자동 데이터 타입 변환

  • 자동 데이터 타입 변환 유형
FROM TO
VARCHAR2 혹은 CHAR NUMBER(숫자)
VARCHAR2 혹은 CHAR DATE(날짜)
NUMBER VARCHAR2(문자)
DATE VARCHAR2(문자)

(1) 자동 베이터 타입 변환 사례

SELECT 1 + ‘2’
FROM DUAL;

3. 수동 데이터 타입 변환

  • 수동 데이터 타입 변환 함수
함수 설명
TO_CHAR 숫자, 문자, 날짜 값을 지정 형식의 VARCHAR2 타입으로 변환
TO_NUMBER 문자를 숫자 타입으로 변환
TO_DATE 날짜를 나타내는 문자열을 지정 형식의 날짜 타입으로 변환

4. 날짜 및 시간 형식 변환하기

  • TO_CHAR

    TO_CHAR(날짜 데이터 타입, ‘지정 형식’)

지정 형식 설명 결과
CC 세기 TO_CHAR(SYSDATE, ‘CC’) 21
YYYY or YYY or YY or Y 연도 TO_CHAR(SYSDATE, ‘YYYY’) 2017, 017, 17, 7
Y, YYY 콤마가 있는 연도 TO_CHAR(SYSDATE, ‘Y, YYY’) 2,017
YEAR 문자로 표현된 연도 TO_CHAR(SYSDATE, ‘YEAR’) TWENTY SEVENTEEN
BC or AD BC/AD 지시자 TO_CHAR(SYSDATE, ‘AD’ 서기
Q 분기 TO_CHAR(SYSDATE, ‘Q’) 4
MM 두 자리 값의 월 TO_CHAR(SYSDATE, ‘MM’) 10월
MONTH 아홉 자리를 위해 공백을 추가한 월 이름 TO_CHAR(SYSDATE, ‘MONTH’) 10월
MON 세 자리의 약어로 된 월 이름(영문 설정일 경우) TO_CHAR(SYSDATE, ‘MONTH’) 10월
RM 로마 숫자 월 TO_CHAR(SYSDATE, ‘RM’) X
WW or W 연, 월의 주 TO_CHAR(SYSDATE, ‘WW’) 40, 1
DDD or DD or D 연, 월, 주의 일 TO_CHAR(SYSDATE, ‘DD’) 280, 07, 7
DAY 아홉 자리를 위해 공백을 추가한 요일 이름 TO_CHAR(SYSDATE, ‘DAY’) 토요일
DY 세 자리 약어로 된 요일 이름(영문 설정일 경우) TO_CHAR(SYSDATE, ‘DY’)
J Julian day, BC 4713년 12월 31일 이후의 요일 수 TO_CHAR(SYSDATE, ‘J’) 2459044

SELECT TO_CHAR(SYSDATE, ‘CC’)
                TO_CHAR(SYSDATE, ‘YYYY’)
                TO_CHAR(SYSDATE, ‘MM’)
                TO_CHAR(SYSDATE, ‘MON’)
                TO_CHAR(SYSDATE, ‘YYYYMMDD’) 응용적용1,
                TO_CHAR(TO_DATE(‘20171008’), ‘YYYYMMDD’) 응용적용2
FROM dual;

지정 형식 설명
AM or PM 오전 또는 오후 표시
HH / HH12 or HH24 시간 표현(112시 똫는 023시)
MI 분(0~59)
SS 초(0~59)

SELECT TO_CHAR(SYSDATE, ‘HH:MI:SS PM’) 시간형식,
                TO_CHAR(SYSDATE, ‘YYYY/MM/DD HH:MI:SS PM’) 날짜와시간조합
FROM dual;

요소 설명
/, .,- 사용문자를 출력 결과에 표현
“문자” 큰따옴표 안의 문자를 출력 결과에 표현

SELECT TO_CHAR(SYSDATE, ‘HH-MI-SS PM’) 시간형식,
                TO_CHAR(SYSDATE, ‘ “날짜:” YYYY/MM/DD “시각:” HH:MI:SS PM’) 날짜와시각표현
FROM dual;

5. 숫자 형식 변환하기

TO_CHAR(숫자 데이터 타입, ‘지정 형식’)

지정 형식 설명 결과
9 9로 출력 자릿수 지정 TO_CHAR(salary, ‘99999999’) 24000(앞에 3칸 띄움)
0 자릿수만큼 0을 출력 TO_CHAR(salary, ‘09999999’) 00024000
$ 달러 기호 TO_CHAR(salary, ‘$9999999’) $24,000
L 지역 화폐 기호(원) TO_CHAR(salary, ‘L9999999’) ₩24,000
. 명시한 위치에 소수점 TO_CHAR(salary, ‘999999.99’) 24000.00
, 명시한 위치에 쉼표 TO_CHAR(salary, ‘9,999,999’) 24,000

TO_NUMBER(number)

  • 숫자 타입의 문자열을 숫자 데이터 타입으로 변환하는 함수
  • 출력 결과 변하지 않음, 데이터 타입만 변함

SELECT TO_NUMBER(‘123’)
FROM dual;

TO_DATE(문자열, ‘지정 형식’)

  • 날짜 문자열을 명시된 날짜로 변환하는 함수

SELECT TO_DATE(‘20200713’, ‘YYMMDD’)
FROM dual;

자료출처: 모두의 SQL

date type function

1. 날짜 타입 함수

Date + Number : 날짜에 일수를 더함, Date 값을 반환
Date - Number : 날짜에 일수를 뺌, Date 값을 반환
Date - Date : 날짜에서 날짜를 뺌, 일수를 반환
Date + Number / 24 : 날짜에 시간을 더할 때는 시간을 24로 나눠서 날짜에 더함, Date 값을 반환

(1) 오늘 날짜와 시간, 오늘날짜에서 1을 더한 값, 1을 뺀 값, 2017년 12월 2일에서 2017년 12월 1일을 뺀 값, 오늘 날짜에서 13시간을 더한 값 출력하기

TO_CHAR : 문자 변환 함수, SYSDATE의 시간까지 출력하기 위해 사용함
SYSDATE : 시스템의 현재 날짜와 시간을 반환하는 함수

SELECT TO_CHAR(SYSDATE, ‘YY/MM/DD/HH24:MI’) 오늘날짜,
                SYSDATE + 1 더하기1,
                SYSDATE - 1 빼기1,
                TO_DATE(‘20171202’)-TO_DATE(‘20171201’) 날짜빼기,
                SYSDATE + 13/24 시간더하기
FROM DUAL;

날짜 함수 설명 결과
MONTHS_BETWEEN 두 날짜 사이의 월수를 계산 MONTHS_BETWEEN(SYSDATE, HIRE_DATE) 171.758
ADD_MONTHS 월을 날짜에 더함 ADD_MONTHS(HIRE_DATE, 5) 03/11/17
NEXT_DAY 명시된 날짜부터 돌아오는 요일에 대한 날짜를 출력(SUNDAY:1, MONDAY:2, …) NEXT_DAY(HIRE_DATE, 1) 03/06/22
LAST_DAY 월의 마지막 날을 계산 LAST_DAY(HIRE_DATE) 03/06/30
ROUND 날짜를 가장 가까운 연도 또는 월로 반올림(YEAR or MONTH) ROUND(HIRE_DATE, ‘MONTH’) 03/07/01
TRUNC 날짜를 가장 가까운 연도 또는 월로 절삭(YEAR or MONTH) TRUNC(HIRE_DATE, ‘MONTH’) 03/06/01

2. MONTHS_BETWEEN : 두 날짜 사이의 개월 수 계산하기

MONTHS_BETWEEN(날짜, 날짜)

(1) employees 테이블에서 department_id가 100인 직원에 대해 오늘 날짜, hire_date, 오늘 날짜와 hire_date 사이의 개월 수를 출력하세요.

SELECT SYSDATE, hire_date, MONTHS_BETWEEN(SYSDATE, hire_date) 적용결과
FROM employees
WHERE department_id = 100;

3. ADD_MONTHS : 월에 날짜 더하기

ADD_MONTHS(날짜, 숫자)

(1) employees 테이블에서 employee_iod가 100과 106 사이인 직원의 hire_date에 3개월을 더한 값, hire_date에 3개월을 뺀 값을 출력하세요.

SELECT hiredate,
                ADD_MONTHS(hire_date, 3) 더하기
적용결과,
               ADDMONTHS(hire_date, -3) 빼기적용결과
FROM employees
WHERE employee_id BETWEEN 100 AND 106;

4. NEXT_DAY : 돌아오는 요일의 날짜 계산하기

NEXT_DAY(날짜, ‘요일’ or 숫자)

(1) employees 테이블에서 employee_id가 100과 106 사이인 직원의 hire_date에서 가장 가까운 금요일의 날짜가 언제인지 문자로 지정해서 출력하고, 숫자로도 지정해서 출력하세요.

SELECT hiredate,
                NEXT_DAY(hire_date, ‘금요일’) 적용결과
문자지정,
                NEXTDYA(hire_date, 6) 적용결과숫자지정
FROM employees
WHERE employee_id BETWEEN 100 AND 106;

5. LAST_DAY : 돌아오는 월의 마지막 날짜 계산하기

LAST_DAY(날짜)

(1) employees 테이블에서 employee_id가 100과 106 사이인 직원의 hire_date를 기준으로 해당 월의 마지막 날짜를 출력해 보세요.

SELECT hire_date,
                LAST_DAY(hire_day)
FROM employees
WHERE employee_id BETWEEN 100 AND 106;

6. ROUND, TRUNC : 날짜를 반올림하거나 절삭하기

ROUND or TRUNC(날짜, 지정 값)

(1) employees 테이블에서
SELECT hire_date,
                ROUND(hire_date, ‘MONTH’) 적용결과_ROUND_M,                 ROUND(hire_date, ‘YEAR) 적용결과_ROUND_Y,
                TRUNC(hire_date, ‘MONTH’) 적용결과_TRUNC_M,
                TRUNC(hire_date, ‘YEAR’) 적용결과_TRUNC_Y
FROM employees
WHERE employee_id BTWEEN 100 AND 106;

자료출처: 모두의 SQL

sql number type function

1. 숫자 타입 함수
(1) 숫자 함수의 종류

ROUND : 숫자를 반올림한다. 0이 소숫점 첫째 자리다.
TRUNC : 숫자를 절삭한다. 0이 소수점 첫째 자리다.
MOD : 나누기 후 나머지를 구한다.
CEIL : 숫자를 정수로 올림한다.
FLOOR : 숫자를 정수로 내림한다.
SIGN : 양수(1), 음수(-1), 0인지를 구분하여 출력한다.
POWER : 거듭제곱을 출력한다.
SQRT : 제곱근을 출력한다.

2. ROUND : 숫자 반올림하기

ROUND(숫자 or 열 이름, 반올림할 자리 값)

(1) employees 테이블에서 salary를 30일로 나눈 후 나눈 값의 소숫점 첫째자리, 소수점 둘째 자리, 정수 첫째 자리에서 반올림한 값을 출력하세요.

SELECT salary,
                salary/30 일급,
                ROUND(salary/30, 0) 적용결과0,
                ROUND (salary/30, 1) 적용결과1,
                ROUND(salary/30, -1) 적용결과MINUS1
FROM    employees;

3. TRUNC:숫자 절삭하기

TRUNC(숫자 or 열 이름, 절삭할 자리 값)

(1) employees 테이블에서 salary를 30일로 나누고 나눈 값의 소수점 첫째 자리, 소수점 둘째 자리, 정수 첫째 자리에서 절삭하여 출력하세요.

SELECT salary
                salary/30 일급,
                TRUNC(salary/30, 0) 적용결과0,
                TRUNC (salary/30, 1) 적용결과1,
                TRUNC (salary/30, -1) 적용결과MINUS1
FROM employees;

자료출처: 모두의 SQL

sql string type function

함수란?

  • 미리 정의된 기능을 통해 데이터를 좀 더 편리하게 조작할 수 있도록 해줍니다.
  • 단일 행 함수 : 한번에 하나의 데이터를 처리하는 함수
  • 그룹 함수 : 여러 건의 데이터를 동시에 처리하는 함수

1. 문자 타입 함수

(1) 문자 함수의 종류

LOWER : 값을 소문자로 변환한다.
UPPER : 값을 대문자로 변환한다.
INITCAP : 첫 번째 글자만 대문자로 변환한다.
SUBSTR : 문자열 중 일부분을 선택한다.
REPLACE : 특정 문자열을 찾아 바꾼다.
CONCAT : 두 문자여릉ㄹ 연결한다(|| 연산자와 같다).
LENGTH : 문자열의 길이를 구한다.
INSTR : 명명된 문자의 위치를 구한다.
LPAD : 왼쪽부터 특정 문자로 자리를 채운다.
RPAD : 오른쪽부터 특정 문자로 자리를 채운다.
LTRIM : 주어진 문자열의 왼쪽 문자를 지운다.
RTRIM : 주어진 문자열의 오른쪽 문자를 지운다.

2. LOWER, UPPER, INITCAP : 데이터 값을 대소문자로 변환하기

(1) employees 테이블에서 last_name을 소문자와 대문자로 각각 출력하고, email의 첫 번째 문자는 대문자로 출력하세요.

SELECT last_name,
               LOWER(last_name) LOWER적용,
               UPPER(last_name) UPPER적용,
               email,
               INITCAP(email) INITCAP적용
FROM employees;

3. SUBSTR : 지정한 길이만큼 문자열 추출하기

SUBSTR(‘문자열’ or 열 이름, 시작위치, 길이)

(1) employees 테이블에서 job_id 데이터 값의 첫째 자리부터 시작해서 두 개의 문자를 출력하세요.

SELECT job_id, SUBSTR(job_id, 1, 2) 적용결과
FROM employees;

4. REPLACE : 특정 문자를 찾아 바꾸기

REPLACE(‘문자열’ or 열 이름, ‘바꾸려는 문자열’, ‘바뀔 문자열’)

(1) employees 테이블에서 job_id 문자열 값이 ACCOUNT면 ACCNT로 출력하세요.

SELECT job_id, REPLACE(job_id, ‘ACCOUNT’, ‘ACCNT’)
FROM employees;

5. LPAD, RPAD : 특정 문자로 자릿수 채우기

LPAD(‘문자열’ or 열 이름, 만들어질 자릿수, ‘채워질 문자’)

(1) employees 테이블에서 first_name에 대해 12자리의 문자열 자리를 만들되 first_name의 데이터 값이 12자리보다 작으면 왼쪽에서부터 *를 채워서 출력하세요.

SELECT first_name, LPAD(first_name, 12, ‘*‘) LPAD적용결과
FROM employees;

6. LTRIM, RTRIM : 특정 문자 삭제하기

LTRIM(‘문자열’ or 열 이름, ‘삭제할 문자’)

(1) employees 테이블에서 job_id의 데이터 값에 대해 왼쪽 방향부터 ‘F’문자를 만나면 삭제하고 또 오른쪽 방향부터 ‘T’문자를 만나면 삭제해 보세요.

SELECT job_id,
               LTRIM(job_id, ‘F’) LTRIM적용결과,
               RTRIM(job_id, ‘T’) RTRIM적용결과
FROM employees;

7. TRIM : 공백 제거하기

TRIM(‘문자열’ or 열 이름)

SELECT ‘start’||TRIM(‘ - space - ‘)||’end’ 제거된_공백
FROM dual;

  • dual 테이블 : dummy라는 하나의 열과 하나의 ‘X’테이블 값을 갖고 있는 테이블
  • 임의의 값을 알고자 하거나 특정 테이블을 참고하지 않아도 될 때 유용함
  • 앞의 예처럼, 단순히 지정 문자를 출력하거나 오늘의 날짜를 알고 싶을 때 사용

자료출처: 모두의 SQL