SQL(5) MYSQL 내장함수

hyeeun·2025년 8월 18일

bootcamp

목록 보기
22/22
post-thumbnail
  • 문자형
    - CONCAT, TRIM, REPLACE
    • LOCATE
  • 숫자형
    - ABS, MOD, POW
    • CEIL, FLOOR, ROUND
  • 날짜형
    - CURDATE, CURTIME, NOW
    • DATE_FORMAT
  • NULL 관련
    - IFFULL, COALESCE, NULLIF

1. 문자형 함수

  • CONCAT (str1, str2,..)
    - 인자로 들어오는 문자열을 하나로 연결해주는 함수

  • TRIM([[BOTH|LEADING|TRAILING] remove_str] target str)
    - 왼쪽, 또는 오른쪽의 특정문자를 삭제하는 함수

    • remove_str을 생략하는 경우 공백문자를 삭제
  • REPLACE(target_str, from_str, to_str)
    - 문자열을 수정하기 위해 사용하는 함수

  • LOCATE(sub_str, target_str, [,pos])
    - 찾으려는 문자가 있다면, 그 문자의 첫번째 위치를 반환

    • 찾으려는 문자가 없다면, 0을 반환
    • pos에 숫자를 작성하면 해당 위치부터 탐색

1. CONCAT

SELECT CONCAT('Hello', '!', 'World');  

2. sales_outlet 테이블에서 address와 postcode를 중간에 공백을 추가하여 조회

SELECT CONCAT(store_address, ' ', store_postal_code) 
FROM sales_outlet;

3. TRIM

SELECT TRIM('   phone   '); 
SELECT TRIM('-' FROM '---title---');
SELECT TRIM(LEADING '-' FROM '---title---'); 
SELECT TRIM(TRAILING '-' FROM '---title---');

4. product 테이블에서 current_retail_price에서 $표시 삭제

SELECT REPLACE(current_retail_price, '$', '') 
FROM product;

5. LOCATE

SELECT LOCATE('download', 'dev.mysql.com/downloads/mysql/8.0.html'); SELECT LOCATE('download', 'dev.mysql.com/downloads/mysql/8.0.html', 10)

6. sales_outlet 테이블에서 store_postal_code에서 '100'의 위치

SELECT LOCATE('100', store_postal_code) 
FROM sales_outlet;

2. 숫자형 함수

  • ABS(x)
    - x의 절대값을 반환

  • MOD(n,m)
    - n을 m으로 나누었을때 나머지를 반환

    • n%m과 동일
  • POW(n,m)
    - n의 m승의 결과를 반환

  • CEIL(x)
    - x의 올림값을 반환

  • FLOOR(x)
    - x의 내림값을 반환

  • ROUND(x[,d])
    - x의 반올림값을 반환

    • d는 소수점 자리수를 의미

1. ABS

SELECT ABS(-12); 

2. MOD

SELECT MOD(10, 3);

3. POW

SELECT POW(2, 10);

4. CEIL

SELECT CEIL(10.1);

5. FLOOR

SELECT FLOOR(10.1);

6. ROUND

SELECT ROUND(10.83); 
SELECT ROUND(10.83, 1);

3. 날짜형 함수

  • CURDATE()
    - 현재 날짜를 반환

  • CURTIME()
    - 현재 시간을 반환

  • NOW()
    - 현재 날짜와 시간을 반환

  • DATE_FORMAT(date, format)
    - 날짜 정보를 원하는 format 형태로 변환

1. CURDATE

SELECT CURDATE();

2. CURTIME

SELECT CURTIME();

3. NOW

SELECT NOW();

4. DATE_FORMAT

SELECT DATE_FORMAT('2025-01-16 13:30:54', '%b-%d (%a) %r')

4. NULL 관렴 함수

  • IFNULL(expr1, expr2)
    - expr1이 NULL이면 expr2 반환

    • expr1이 NULL이 아니면 expr1 반환
  • NULLIF(expr1, expr2)
    - expr1과 expr2이 동일한 경우 NULL 반환

    • expr1과 expr2이 동일하지 않다면 expr1을 반환
  • COALESCE(v1, v2, v3,..)
    - 첫번째 인자 v1부터 순서대로 확인하여 NULL이 아닌 값 반환

    • 모두 NULL인 경우 NULL 반환

1. IFNULL

SELECT IFNULL(NULL, '비어있는 값입니다.'); 
SELECT IFNULL(100, '비어있는 값입니다.');

2. customer 테이블에서 name과 birth_year를 조회 & birth_year가 NULL이면 No data가 출력될 수 있도록 조회

SELECT customer_name, IFNULL(birth_year, 'No data') 
FROM customer;

3. NULLIF

SELECT NULLIF('hello', 'hello'); 
SELECT NULLIF('hello', 'world');

4. sales_outlet 테이블에서 manager가 NULL인 경우 0이 표시되도록store_id와 manager조회

SELECT store_id, NULLIF(IFNULL(manager, ''),0) AS manager 
FROM sales_outlet;

5. COALESCE

SELECT COALESCE('hello', 'world', NULL); SELECT COALESCE(NULL, 'hello', NULL); SELECT COALESCE(NULL, NULL, NULL);

6. customer 테이블에서 gender가 N이거나 NULL인 경우 customer_name을 출력하고 만약 Name도 NULL인 경우 'No Data'를 출력

SELECT COALESCE(NULLIF(gender, 'N'), customer_name, 'No Data') FROM customer;
```~~텍스트~~
profile
hyeeun-techlog

0개의 댓글