본문 바로가기
Database/MySQL

컬럼 출력시 사칙연산 넣기 / 문자,숫자 다루는 함수

by 컴돈AI 2024. 2. 29.

목차

    컬럼 출력 시 사칙연산 넣기

    • 더하기(+), 빼기(-), 곱하기(*), 나누기(/) 모두 사용가능합니다.
      • 단, 문자들어 있는 컬럼에 사칙연산하면 안 됩니다!!
    • 예시
      • 사용금액에 수수료를 제외한 90% 금액만 출력하기
        • SELECT 사용금액*0.9 FROM card
      • 결제당 평균 사용 금액 출력하기 (겻제횟수와 사용금액 이용)
        • SELECT 사용금액/결제횟수 FROM card
      • 고객명과 고객등급을 합쳐서 출력하기.
        • + (사칙연산) 이용해보기
          • 문자가 있는 컬럼에 +(사칙연산)를 사용하니 오류가 발생하는 것을 확인할 수 있습니다.
        • CONCAT 이용
          • SELECT CONCAT(고객명," ",고객등급) FROM card
        • 이처럼 문자는 문자 전용 함수를 이용해야 합니다.

    문자 다루는 함수

    CONCAT

    • SELECT CONCAT(합치고싶은문자컬럼1, 합치고싶은문자컬럼2, "넣고싶은문자", ...) FROM 테이블명
      • CONCAT을 통해 문자를 가진 컬럼끼리 합쳐서 출력이 가능합니다.
      • 참고 : Postgres, Oracle은 CONCAT 대신 || 를 사용합니다.
        • SELECT 합치고싶은문자컬럼1 || 합치고싶은문자컬럼2 || "넣고싶은문자" FROM 테이블명
    • 예시
      • 고객명 컬럼과 고객등급 컬럼 사이에 is를 넣어서 출력하기
        • SELECT CONCAT(고객명," is ",고객등급) FROM card

    TRIM

    • SELECT TRIM(공백을 포함한 문자) FROM 테이블명
      • TRIM을 통해 문자의 좌우 공백을 제거 후 출력할 수 있습니다.
    • 예시
      • SELECT TRIM("   안  녕  하세요.   ") FROM card

        • 좌우 공백만 제거된 것을 확인할 수 있습니다.

    REPLACE

    • SELECT REPLACE(컬럼명, 바뀔단어, 바꿀단어) FROM 테이블명
      • 특정 컬럼에 대해서 특정 단어를 다른 단어로 변경시켜 줄 수 있습니다.
    • 예시
      • SELECT REPLACE (고객등급,"패","훼") FROM card

    SUBSTR

    • SELECT SUBSTR(컬럼명, 몇째글자부터, 몇자) FROM 테이블명
      • 특정 컬럼에 대해서 몇 번째 글자부터 몇 글자만 뽑아서 출력해 줄 수 있습니다.
    • 예시
      • SELECT SUBSTR(고객명,2,3) FROM card

        • 2번째 글자부터 총 3글자가 출력되었습니다. (2, 3, 4 번째 글자 출력)
        • 총 4글자보다 짧은 글자들은 마지막 글자까지만 출력되었습니다.

    INSERT

    • SELECT INSERT(컬럼명, 몇째글자부터, 몇자, 바꿀단어)
      • REPLACE와 동일한 기능입니다. 하지만 INSERT는 특정 글자를 바꾸는 것이 아니라 특정 부분을 바꾸는 것입니다. 이메일 이름을 변경할 때 유리합니다.
    • 예시
      • INSERT 사용
        • SELECT INSERT("test@naver.com", 1, 4, 고객명) FROM card
      • REPLACE 사용
        • SELECT REPLACE("test@naver.com", "test", 고객명) FROM card

    숫자 다루는 함수

    GREATEST, LEAST

    • MAX, MIN은 하나의 컬럼에 대해서 최댓값과 최솟값을 구하는 것입니다.  GREATEST와 LEAST는 하나의 로우에 대해서 최댓값과 최솟값을 구해줍니다.
    • SELECT GREATEST(COL1, COL2, COL3, ...) FROM 테이블명
      • ROW의 최댓값을 구해줍니다.
    • SELECT LEAST(COL1, COL2, COL3, ...) FROM 테이블명
      • ROW의 최솟값을 구해줍니다.
    • 예시
      • GREATEST
        • SELECT GREATEST(Column1, Column2, Column3) FROM test_table
      • LEAST
        • SELECT LEAST(Column1, Column2, Column3) FROM test_table

    FLOOR / CEIL

    • SELECT FLOOR(소수점 들어있는 숫자)
      • FLOOR는 소수 부분을 내림해서 정수로 바꿔줍니다.
    • SELECT CEIL(소수점 들어있는 숫자)
      • CEIL은 소수부분을 올림 해서 정수로 바꿔줍니다.
    • 예시
      • SELECT FLOOR(10.1)  -> 10
      • SELECT FLOOR(10.9) -> 10
      • SELECT CEIL(10.1) -> 11
      • SELECT CEIL(10.9) -> 11

    ROUND / TRUNCATE

    • SELECT ROUND(소수점들어있는숫자, 자릿수)
      • 입력한 자릿수까지 반올림해 줍니다.
    • SELECT TRUNCATE(소수점들어있는숫자, 자릿수)
      • 입력한 자릿수까지 내림해 줍니다.
      • 참고 : Oracle, Postgres는 TRUNCATE() 말고 TRUNC()라고 씁니다.
    • 예시
      • SELECT ROUND(10.777, 2) -> 10.78
      • SELECT TRUNCATE(10.777, 2) -> 10.77

    POWER

    • SELECT POWER(숫자, 지수)
      • 숫자를 거듭제곱하고 싶을 때 사용합니다.
    • 예시
      • SELECT POWER(4, 2) -> 16

    ABS

    • SELECT ABS(숫자)
      • 숫자의 절댓값을 출력해 줍니다.
    • 예시
      • SELECT ABS(-100) -> 100

    예제

    • 특정 문자에 있는 모든 공백을 제거해서 출력하기
      • SELECT REPLACE(상품명, ' ', '') FROM 테이블명
        • 공백을 빈 문자로 변경해 주면 됩니다.
    • 휴대폰 뒷자리 4글자만 출력하기(번호 컬럼 예시 : 010-1234-1234)
      • SELECT RIGHT(번호, 4) FROM 테이블명
        • 뒤에서 4자리 출력
        • 참고 : LEFT의 경우는 앞에서부터 해당 숫자 자리만큼 출력해 줍니다.
      • SELECT SUBSTR(번호, 10,4) FROM 테이블명
        • 10번째 자리부터 4자리 출력

    출처