DBMS별 문자열 결합 방식 차이 (MySQL vs MSSQL vs Oracle)

SeongGyun Hong·2025년 2월 13일

SQL

목록 보기
39/51

프로그래머스에서 노선별 평균 역 사이 거리 조회하기 문제를 풀다가 DBMS별로 문자열을 결합하는 방식을 이번기회에 정리함

DBMS별 문자열 결합 방식

1. MySQL

MySQL에서는 CONCAT 함수를 사용하여 문자열을 결합
MySQL에서는 VARCHAR 대신 CHAR를 사용

SELECT 
    ROUTE,
    CONCAT(CAST(ROUND(SUM(D_BETWEEN_DIST), 1) AS CHAR), 'km') AS TOTAL_DISTANCE,
    CONCAT(CAST(ROUND(AVG(D_BETWEEN_DIST), 2) AS CHAR), 'km') AS AVERAGE_DISTANCE
FROM SUBWAY_DISTANCE
GROUP BY LINE, ROUTE
ORDER BY SUM(D_BETWEEN_DIST) DESC;

2. MS SQL Server

MS SQL Server에서는 + 연산자를 사용하여 문자열을 결합

SELECT 
    ROUTE,
    CAST(ROUND(SUM(D_BETWEEN_DIST), 1) AS VARCHAR(20)) + 'km' AS TOTAL_DISTANCE,
    CAST(ROUND(AVG(D_BETWEEN_DIST), 2) AS VARCHAR(20)) + 'km' AS AVERAGE_DISTANCE
FROM SUBWAY_DISTANCE
GROUP BY LINE, ROUTE
ORDER BY SUM(D_BETWEEN_DIST) DESC;

3. Oracle

Oracle에서는 || 연산자를 사용하여 문자열을 결합

SELECT 
    ROUTE,
    CAST(ROUND(SUM(D_BETWEEN_DIST), 1) AS VARCHAR(20)) || 'km' AS TOTAL_DISTANCE,
    CAST(ROUND(AVG(D_BETWEEN_DIST), 2) AS VARCHAR(20)) || 'km' AS AVERAGE_DISTANCE
FROM SUBWAY_DISTANCE
GROUP BY LINE, ROUTE
ORDER BY SUM(D_BETWEEN_DIST) DESC;

세 가지 방식의 차이점

  1. MySQL: CONCAT 함수를 사용하며, 형변환시 CHAR 타입 사용
  2. MS SQL Server: + 연산자를 사용하며, VARCHAR 타입 사용
  3. Oracle: || 연산자를 사용하며, VARCHAR 타입 사용 (Oracle에서는 VARCHAR2도 사용 가능)
profile
헤매는 만큼 자기 땅이다.

0개의 댓글