SQL 함수

김명식·2023년 6월 8일
0

학습 시리즈

목록 보기
1/3
post-thumbnail

나는 PostgreSQL, MySQL을 주로 사용한다.
실무에서는 아무래도 확장성이 좋은 PostgreSQL을 사용하지만,
간단한 SQL 문제를 풀기 위해서는 단일DB를 사용하는 MySQL을 사용하는것이 좋다.

그리 큰 차이는 없겠지만 SQL 문법은 MySQL에 맞추어 기술하겠다.


IFNULL

  • null값을 다른 값으로 대체하는데 사용되는 함수이다.
SELECT IFNULL(name, 'Unknown') FROM employees;

위 쿼리는 name열의 값이 null이면 Unknown을 출력한다.


DATE_FORMAT

  • 날짜를 지정한 포맷으로 변경하는 함수이다.
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');

위 쿼리는 현재 날짜를 YYYY-mm-dd 형식으로 출력된다.
즉, 2023-06-08 처럼 출력된다.


DATEDIFF

  • 두 날짜 사이의 차이를 계산하는 함수이다.
SELECT DATEDIFF(end_date, start_date) AS days_between
FROM table_name;

위 쿼리는 table_name 테이블에서 end_date 열과 start_date 열의 차이를 계산한다.
예를 들어,
state_date열이 2023-06-01 , end_date열이 2023-06-07 이라면 6을 반환한다.


CASE WHEN

  • 조건에 따라 다른 값을 반환하는데 사용되는 문법이다.
SELECT
    student_id,
    student_name,
    CASE
        WHEN gender = 'male' THEN '남성'
        WHEN gender = 'female' THEN '여성'
        ELSE '기타'
    END AS gender
FROM
    students;

이 문법은 다음과 같은 결과를 반환한다

student_idstudent_namegender
1Alice여성
2Bob남성
3Carol기타

IF

  • 조건에 따라 다른 값을 반환하는데 사용된다.
    CASE WHEN의 경우 다양한 조건을 걸 수 있지만 IF는 TRUE or FALSE 만 구분한다.
SELECT IF(age >= 18, "성인", "미성년자");

CONCAT

  • 두 개 이상의 문자열을 결합하는데 사용한다.
SELECT CONCAT("Hello", "World");

위 코드는 두 문자열을 결합하여 "Hello World" 를 반환한다.

이를 응용해서,
LEFT MID RIGHT를 사용해 전화번호 사이사이에 하이픈(-)을 넣을 수도 있다.
만약 번호가 01012346789 형식이라고 한다면

CONCAT( LEFT(USER.TLNO, 3) , '-', 
	MID(USER.TLNO, 4, 4), '-' , 
	RIGHT(USER.TLNO, 4) )
	AS '전화번호'

위 쿼리를 실행한 뒤 010-1234-6789 로 출력할 수 있다.
LEFT(USER.TLNO, 3) : USER.TLNO의 LEFT(처음)부터 3번째 까지 출력,
MID(USER.TLNO, 4, 4) : USER.TLNO의 MID(중간), 4번째부터 그 뒤의 4번째 까지 출력,
RIGHT(USER.TLNO, 4) : USER.TLNO의 RIGHT(끝)부터 4번째 앞부터 끝까지 출력


profile
BackEnd & AWS Developer

0개의 댓글