본문 바로가기

SQL/ORACLE

SQL 단일 행 함수

1. 단일 행 함수란?

 

단일 행 함수는 함수 하나의 연산 당 결과 행도 하나라는 의미이다.

즉, 총 15 개의 데이터가 있는 컬럼을 대상으로 함수를 실행하였을 때 결과 행 또한 15 개가 출력되는 것이다. 

 

 

2. 문자 함수

 

문자 데이터를 입력받아 문자나 숫자로 결과를 반환하는 함수이다.

 

1️⃣ 대소문자 변환 함수

INITCAP : 문자열의 첫 문자만 대문자로 변환
                  INITCAP('student') 👉 Student
LOWER : 문자열 전체를 소문자로 변환
                 LOWER('STUDENT') 👉 student
UPPER : 문자열 전체를 대문자로 변환
                UPPER('student') 👉 STUDENT

특히 LOWER 과 UPPER 함수는 검색어의 키워드를 구분하기 할 때에도 유용하게 활용할 수 있다.

사용자가 영문 검색어에 대해 소문자로 작성할지 대문자로 작성할지 섞어서 작성할지 알 수 없기 때문에

입력 받은 데이터 모두를 소문자 또는 대문자로 강제 변환하여 한 가지 방법으로만 내부적으로 검색할 수 있도록 하는 것이다.

 

2️⃣ 문자열 길이 반환 함수

LENGTH : 문자열 길이를 반환
                  LENGTH('학생') 👉 2
LENGTHB : 문자의 바이트 수를 반환(SQL 의 인코딩 환경에 따라 다르게 나올 수 있다.)
                     LENGTHB('학생') 👉 4

 

3️⃣ 문자 조작 함수

CONCAT : 두 문자열을 결합, '||' 와 동일
                  CONCAT('문자열', '문자열')
SUBSTR : 특정 문자 또는 문자열 일부를 추출
                  SUBSTR('문자열', '시작 위치', '추출할 문자 개수')
INSTR : 특정 문자가 있는 첫 번째 위치를 숫자로 반환
              INSTR('문자열', '특정 문자')
LPAD : 문자열을 오른쪽 정렬 후, 왼쪽으로 지정한 문자를 지정한 총 길이에서 문자열 길이를 뺀 만큼 삽입
             LPAD('문자열', '총 길이', '지정 문자')
RPAD : 문자열을 왼쪽 정렬 후, 오른쪽으로 지정한 문자를 지정한 총 길이에서 문자열 길이를 뺀 만큼 삽입 
             RPAD('문자열', '총 길이', '지정 문자')
LTRIM : 문자열의 맨 앞 부분에 지정한 문자가 있을 경우 삭제 처리
              LTRIM('문자열', '지정 문자')
RTRIM : 문자열의 맨 뒷 부분에 지정한 문자가 있을 경우 삭제 처리 
              RTRIM('문자열', '지정 문자')

이 문자 함수를 잘 이용하면 이러한 형태를 출력하는 것도 가능하다.

 

📌 시작 번호는 1

SQL 상에서의 INDEX 시작 번호는 1부터이다. 

때문에 추출하고자 하는 지정 글자가 대상 문자열에 없는 경우에는 0을 반환하게 된다.

(자바에서는 0부터 시작하고 없는 경우에는 -1을 반환)

 

 

3. 숫자 함수

ROUND : 지정한 소수점 자리로 대상 숫자를 반올림한다.
TRUNC : 지정한 소수점 자리까지만 남기고 값을 버린다.
MOD : 숫자 1 을 숫자 2로 나눈 나머지 값을 반환한다.
CEIL : 지정한 값보다 큰 수 중 가장 작은 정수를 반환한다.
FLOOR : 지정한 값보다 작은 수 중 가장 큰 정수를 반환한다.

이 숫자 함수는 날짜에도 적용할 수 있는데 다음과 같은 연산도 가능해진다.

이는 오늘 날짜를 대상으로 일 단위에서 반올림을 시도한 것이다. 

현재 시간을 반영하여 하루 중 반이 지나갔다면 다음 날로, 그렇지 않다면 그대로를 반환하게 되는 것이다.

 

📌 날짜 지정하기

날짜를 따로 지정하기 위해서는 TO_DATE() 함수를 이용하여 날짜를 기입해야 한다.

단순히 '2022/10/26'로 작성하게 되면 문자열로 인식하기 때문에 날짜로 동작하지 않는다.

 

4. 날짜 함수

날짜 + 숫자 = 날짜 : 날짜에 일 수를 가산하여 날짜를 계산한다.
날짜 - 숫자 = 날짜 : 날짜에 일 수를 감산하여 날짜를 계산한다.
날짜 - 날짜 = 일수 : 날짜와 날짜를 감산하여 일 수를 계산한다.
날짜 + 숫자 / 24 = 날짜 : 날짜에 시간을 가산하여 날짜 계산

📌 날짜의 연산

날짜에서의 연산은 시간을 제외해야 정확한 연산이 가능하기 때문에 ROUND 또는 TRUNC 등의 숫자 함수를 통해 적절히 함수를 사용하는 것이 좋다.

 

🔷 날짜 함수의 종류

SYSDATE 👉 날짜 : 시스템의 현재 날짜
MONTHS_BETWEEN 👉 숫자 : 날짜와 날짜 사이의 개월 수를 계산
ADD_MONTHS 👉 날짜 : 날짜에 개월 수를 더한 날짜 계산
NEXT_DAY 👉 날짜 : 작성한 날짜 이후의 첫 지정 요일의 날짜를 계산
LAST_DAY 👉 날짜 : 월의 마지막 날짜를 계산
ROUND 👉 날짜 : 날짜를 반올림
TRUNC 👉 날짜 : 날짜를 절삭

📌 요일 표기하기

SQL 에서는 1 부터 일요일로 계산하며 다음과 같이 사용할 수 있다.

만약 시스템이 가동되는 위치가 서양권이면 그곳에 맞춰 'SUN', 'SUNDAY' 등으로 표기 가능하다.

 

'SQL > ORACLE' 카테고리의 다른 글

GROUP BY : 그룹 함수  (0) 2022.11.02
데이터 타입 변환  (0) 2022.10.28
정렬 SORTING  (0) 2022.10.24
집합 연산자 : UNION  (0) 2022.10.24
NULL 이란?  (0) 2022.10.24