DB/SQL
[SQL/Oracle] SQL 단일행 함수에 대해 배워보자.
Huiyeon
2023. 10. 11. 17:05
<Oracle 사용했습니다>
SQL 단일행 함수에 대해 설명하려고 등장했습니다 ( 뚜둔⭐)
여러분은 함수에 대해서 얼마나 아시나요?
많은 분들이 알고 계시겠지만 함수란 어떤값을 입력 받아 정해진 루틴에 의해 작업을 하고 결과값을
만들어서 출력해주는 것을 말합니다.
SQL에서 사용되는 함수는 크게 단일행 함수와 복수행 함수로 구분할 수 있는데요?
단일행 함수?
위 그림에서 왼쪽 테이블에 데이터가 여러개 존재하지만 단일행 함수에 들어가 있는 데이터는 한번에 한개가 들어갈 수 있습니다. 단일행 함수는 여러 건의 데이터를 한번에 처리하는 것이 아니라 한번에 하나씩 처리해주는 함수라고 생각하시면 됩니다.
복수행 함수?
복수행 함수는 여러 건의 데이터를 동시에 입력을 받아서 결과값 1건을 만들어주는 함수입니다. 그룹함수라고 생각하시면 쉽습니다!
문자 함수
함수명 | 의미 | 사용 예 |
INTCAP | 입력 값의 첫 글자만 대문자로 변환 | INTCAP('abcd') -> Abcd |
LOWER | 입력 값을 전부 소문자로 변환 | LOWER('ABCD') -> abcd |
UPPER | 입력 값을 전부 대문자로 변환 | UPPER('abcd') ->ABCD |
LENGTH | 입력된 문자열의 길이 값을 출력 | LENGTH('한글') -> 2 |
LENGTHB | 입력된 문자열의 길이의 바이트 값을 출력 | LENGTHB('한글') -> 4 |
CONCAT | 두 문자열을 결합해서 출력, || 연산자와 동일 | CONCAT('A','B') -> AB |
SUBSTR | 주어진 문자에서 특정 문자만 추출 | SUBSTR('ABC',1,2) -> AB |
SUBSTRB | 주어진 문자에서 특정 바이트만 추출 | SUBSTRB('한글',1,2) -> 한 |
INSTR | 주어진 문자에서 특정 문자의 위치 추출 | INSTR('A*B#','#') -> 4 |
LPAD | 주어진 문자열에서 왼쪽으로 특정 문자를 채움 | LPAD('love',6,'*') -> **love |
RPAD | 주어진 문자열에서 오른쪽의 특정 문자를 삭제 | RPAD('love','6,'*') -> love** |
LTRIM | 주어진 문자열에서 왼쪽의 특정 문자를 삭제 | LTRIM('*love','*') -> love |
RTRIM | 주어진 문자열에서 오른쪽의 특정 문자를 삭제 | RTRIM('love**','*') -> love |
REPLACE | 주어진 문자열에서 A를 B로 치환 | REPLACE('AB','A','E') -> EB |
형 변환 함수
데이터 타입 | 설명 |
CHAR(n) | 고정길이의 문자를 저장합니다. 최대값은 2000바이트입니다. |
VARCHAR2(n) | 변하는 길이의 문자를 저장합니다. 최대값은 4000바이트입니다. |
NUMBER(p,s) | 숫자 값을 저장합니다. p는 전체 자릿수로 1~38자리까지 가능하고, s는 소수점 이하 자릿수로 -84~127자리 까지 가능합니다. |
DATE | 총 7바이트로 BC 4712년 1월 1일부터 AD 9999년 12월 31일까지의 날짜를 저장할 수 잇습니다. |
LONG | 가변 길이의 문자를 저장하며 최대 2GB까지 저장할 수 있습니다. |
CLOB | 가변 길이의 문자를 저장하며 최대 4GB까지 저장할 수 있습니다. |
BLOB | 가변 길이의 바이너리 데이터를 최대 4GB까지 저장할 수 있습니다. |
RAW(n) | 원시 이진 데이터로 최대 2000바이트까지 저장할 수 있습니다. |
LONG RAW(n) | 원시 이진 데이터로 최대 2GB까지 저장할 수 있습니다. |
BFILE | 외부 파일에 저장된 데이터로 최대 4GB까지 저장할 수 있습니다. |
TO_CHAR 함수(숫자형 -> 문자형으로 변환하기)
종류 | 의미 | 사용 예 | 결과 |
9 | 9의 개수만큼 자릿수 | TO_CHAR(1234,'99999') | 1234 |
0 | 빈자리를 0으로 채움 | TO_CHAR(1234,'099999') | 001234 |
$ | $ 표시를 붙여서 표시 | TO_CHAR(1234,'$9999') | $1234 |
. | 소수점 이하를 표시 | TO_CHAR(1234,('9999.99') | 1234.00 |
, | 천 단위 구분 기호를 표시 | TO_CHAR(12345, '99,999') | 12,345 |
사용 예시1)
emp 테이블을 조회하여 이름이 'ALLEN'인 사원의 사번과 이름과 연봉을 출력하세요.
단, 연봉은(sal*12)+comm로 계산하고 천 단위 구분 기호로 표시하세요.
SELECT empno, ename, sal, comm,
TO_CHAR(sal*12)+comm, '999,999') "SALARY"
FROM emp
WHERE ename = 'ALLEN';
으로 사용할 수도 있습니다.
정규식 함수로 다양한 조건 조회하기
아래 표에 있는 기호들은 SQL문장에 추가로 사용해 편리하고 다양한 검색이 가능하게 해주는 정규식 사용 방법입니다.
사용 기호 | 의미 | 사용 예 |
^(캐럿) | 해당 문자로 시작하는 line 출력 | '^pattern' |
$(달러) | 해당 문자로 끝나는 line 출력 | 'pattern$' |
. | S로 시작하여 E로 끝나는 line (. -> 1 character) | 'S. . . . E' |
* | 모든이라는 뜻, 글자 수가 0일 수도 있음 | '[a-z]' |
[ ] | 해당 문자에 해당하는 한 문자 | '[Pp]attern' |
[^] | 해당 문자에 해당하지 않는 한 문자 | '[^a-m]attern' |
사용 예시1)
연속적인 글자 수 지정하는 방법
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[A-Z]{2}');
대문자가 연속적으로 2글자 이상 오는 경우를 출력하게 됩니다.
감사합니다⭐
반응형