슴슴한 IT

[SQLD,SQLP]SQL기본 - 내장함수,문자형 함수 본문

SQL

[SQLD,SQLP]SQL기본 - 내장함수,문자형 함수

요한바울 2023. 7. 23. 21:51
728x90

내장 함수 분류

함수는 벤더에서 제공하는 내장 함수(Built-in Function)와 사용자가 정의할 수 있는 함수(User Defined Function)으로 나눌 수 있으며, 다시 내장 함수는 함수 입력 값이 단일행 값이 입력되는 단일행 함수(Single-Row Function)와 여러 행의 값이 입력되는 다중행 함수(Multi-Row Function)으로 나눌 수 있다. 다중행 함수는 다시 집계함수(Aggregate Function), 그룹 함수(Group Function), 윈도우 함수(Window Function)으로 나눌 수 있다. 

 

단행행 함수의 종류

종류 내용 함수 예
문자형 함수 문자를 입력할 경우 문자나 숫자 값을 반환 LOWER, UPPER, ASCII, CHR/CHAR, CONCAT, SUBSTR/SUBSTRING,
LENGTH/LEN, LTRIM, RTRIM, TRIM
숫자형 함수 숫자를 입력하면 숫자 값을 반환 ABS, SIGN, MOD, CEIL/CEILING, FLOOR, ROUND, TRUNC, SIN, 
COS, TAN, EXP, PWOER, SQRT, LOG, LN
날짜형 함수 DATE 타입의 값을 연산 SYSDATE/GETDATE, EXTRACT/DATEPART, TO_NUMBER
변환형 함수 문자, 숫자, 날짜형 값의 데이터 타입을 변환 CAST, TO_NUMBER, TO_CHAR, TO_DATE /
CAST, CONERT
NULL 함수 NULL을 처리하기 위함 함수 NVL/ISNULL, NULLIF, COALESCE

단일행 함수의 특징

  • SELECT, WHERE, ORDER BY 절에 사용 가능
  • 각 행들에 대해 개별적으로 작용해 데이터 값들을 조작하고, 각각의 행에 대한 조작 결과를 리턴
  • 여러 인자를 입력해도 단 하나의 결과만 리턴
  • 함수의 인자로 상수·변수·표현식이 사용 가능하고, 여러 개의 인수를 가질 수 있음
  • 함수의 인자로 함수를 사용하는 함수의 중첩이 가능함 

※ Oracle / SQL Server 의 함수를 구분해서 표시, '/' 가 없는 경우 공통 함수, 출처 : 한국데이터산업진흥원

 

문자형 함수

문자열 데이터를 처리하고 조작하는데 사용되는 함수, 데이터를 변환하거나 검색, 결합하는 등 문자 데이터를 매개 변수로 받아들여서 문자나 숫자 값의 결과를 돌려줌

CONCAT(str1, str2, ...) : 두 개 이상의 문자열을 결합

SELECT CONCAT('Hello', ' ', 'World') AS result;
-- 결과: 'Hello World'

SUBSTRING(str, start, length) : 문자열의 일부를 추출

SELECT SUBSTRING('Data Modeling', 6, 7) AS result;
-- 결과: 'Modelin'

UPPER(str) : 문자열을 모두 대분자로 변환

SELECT UPPER('hello') AS result;
-- 결과: 'HELLO'

LOWER(str) : 문자열을 모두 소문자로 변환

SELECT LOWER('WORLD') AS result;
-- 결과: 'world'

LENGTH(str) : 문자열의 길이를 계산

SELECT LENGTH('Database') AS result;
-- 결과: 8

TRIM([leading | trailing | both] characters FROM str) : 문자열이나 뒤의 공백을 제거 

SELECT TRIM('    Hello   ') AS result;
-- 결과: 'Hello'
SELECT TRIM('o' from 'Hello') AS result;
-- 결과: 'Hell'

REPLACE(str, from_str, to_str) : 문자열에서 특정 부분 문자열을 다른 문자열로 대체

SELECT REPLACE('Hello, World!', 'World', 'SQL') AS result;
-- 결과: 'Hello, SQL!'

LEFT(str, length) : 문자열의 오니쪽에서 지정한 길이만큼 문자를 추출, 카운팅은 1부터 시작 

SELECT LEFT('Data Modeling', 4) AS result;
-- 결과: 'Data'

RIGHT(str, length) : 문자열의 오른쪽에서 지정한 길이만큼 문자를 추출, 카운팅은 1부터 시작

SELECT RIGHT('Data Modeling', 8) AS result;
-- 결과: 'Modeling'

함수의 중첩 사용 

select substring(trim( 'o'  from  'Hello' ), 1, 2 ) as result;
-- 결과 : 'He'

 

※ Oracle에서는 FROM절과 DUAL 테이블을 반드시 명시해야 하고, Sybase나 SQL Server는 SELECT 절만으로 SQL문장 수행이 가능하다, 단 컬럼을 사용할 때는 Sybase, SQL Server도 FROM절을 명시해야 한다.


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90

'SQL' 카테고리의 다른 글

[SQLD,SQLP]SQL기본 - 날짜형 함수  (0) 2023.07.25
[SQLD,SQLP]SQL기본 - 숫자형 함수  (0) 2023.07.23
[SQLD,SQLP]SQL기본 - 합성연산자  (0) 2023.07.23
[SQLD,SQLP]SQL기본 - 산술연산자  (0) 2023.07.23
[SQLD,SQLP]SQL기본 - SELECT문  (0) 2023.07.21