sql 쿼리에서 db나 column명이 예약어와 겹쳐서,
syntax error 가 발생하는 경우에 어떻게 하면 해결할 수 있는지 확인해보겠습니다.
아래와 같은 모양의 테이블이 있다고 가정할 때,
select order from tbl; 과 같이 쓰면 에러가 발생합니다.
컬럼명 | 타입 |
---|---|
num | int |
order | int |
content | text |
에러 문구 예시 |
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, #디비, #오라클, #예약어