?column?이 나타나는 이유SQL을 실행하다 보면, 결과 컬럼명이 예상과 다르게 ?column? 같은 임시 이름으로 표시되는 경우가 있습니다.
이 현상은 특히 PostgreSQL을 사용할 때 자주 볼 수 있으며, 다른 DBMS에서도 유사한 방식으로 임시 이름을 부여합니다.
?column?이 붙는 이유SELECT price + tax 같은 계산식(expression) 결과는 테이블의 기존 컬럼이 아니므로 이름이 없습니다.사용자가 명시적으로 AS를 사용하지 않으면, DBMS는 다음과 같은 규칙으로 이름을 만듭니다.
?column?Expr1, Expr2 등 자동 번호price + tax 같은 표현식을 그대로 사용하거나 빈 문자열? ?의 의미? ?로 감쌉니다.-- 별칭을 지정하지 않은 경우
SELECT price + tax FROM orders;
PostgreSQL 결과
| ?column? |
|---|
| 110 |
| 220 |
-- 별칭을 지정한 경우
SELECT price + tax AS total_price
FROM orders;
결과
| total_price |
|---|
| 110 |
| 220 |
| DBMS | 별칭 미지정 시 컬럼명 | 예시 출력 |
|---|---|---|
| PostgreSQL | ?column? | ?column? |
| SQLite | 연산식 그대로 반환 | price + tax |
| MySQL | 연산식 그대로 또는 빈 문자열 | price + tax |
| SQL Server | 자동으로 Expr1, Expr2 등 생성 | Expr1 |
| Oracle | 연산식 그대로 | price + tax |
💡 PostgreSQL만 특수문자로 감싼 ?column?을 사용한다는 점이 포인트입니다.
AS를 사용하는 것이 중요한가?ORDER BY, GROUP BY 등에서 별칭을 활용할 수 있음-- 나쁜 예시
SELECT SUM(price) FROM sales;
-- 좋은 예시
SELECT SUM(price) AS total_sales
FROM sales;
?column?은 PostgreSQL이 연산 결과 컬럼에 자동으로 붙이는 임시 이름AS 키워드로 명확한 별칭을 지정하는 것이 권장된다.