0%

SQL(query) DB, column 명이 예약어와 겹칠경우 해결방법

sql 쿼리에서 db나 column명이 예약어와 겹쳐서,
syntax error 가 발생하는 경우에 어떻게 하면 해결할 수 있는지 확인해보겠습니다.

아래와 같은 모양의 테이블이 있다고 가정할 때,
select order from tbl; 과 같이 쓰면 에러가 발생합니다.

컬럼명타입
numint
orderint
contenttext
에러 문구 예시
1
You have an error in your SQL syntax; it seems the error is around: 'order from tbl' at line 2

이를 피하기 위해서는 각 DB별로 아래와 같은 방식으로 해결합니다.

MYSQL / mariadb

1
` `로 감싼다.

따옴표가 아니라 키보드에서 숫자 1 왼쪽에 있는 문자입니다.
억음브호, backtick, backquote, grave accent 등으로 불리는 문자입니다.

예시)

1
select `order` from tbl;

SQLite

``로 감싼다.
예시)

1
select `order` from tbl;

MSSQL / Microsoft SQL Server

[ ]로 감싼다.
예시)

1
select [order] from tbl;

ORACLE

“ “ (큰 따옴표)로 감싼다.
예시)

1
select "order" from tbl;

총평

사용자 입장에서는 모든 DB가 query 문법이 통일화 되었으면 좋겠습니다.

#sql, #query, #mssql, #sqlserver, #db, #oracle, #mysql, #mariadb, #쿼리, #마리아db, #디비, #오라클, #예약어