MySQL(DB)

[바미] 정상적인 SELECT 문을 사용했는데 syntax 에러가 발생할 때

Bami 2024. 10. 14. 14:44
728x90
반응형

BOM(Byte Order Mark)때문에 발생한 원인일 가능성이 높습니다.

BOM은 UTF-8 형식의 인코딩에서 파일의 시작 부분에 들어가는 보이지 않는 특수 문자인데 복붙했을 때 인코딩 형식에 따라 자동으로 포함 될 수 있어요.

SELECT * FROM table WHERE column = 'text';

SELECT * FROM table WHERE column = 'text';

위와 같은 SELECT 문이 있는데 첫 번째 쿼리문은 실행됐고, 두 번째 쿼리문은 syntax 에러가 발생하였습니다.

 

이를 제대로 확인하기 위해 HEX()함수를 사용하여 확인해야 합니다.

SELECT HEX('text');  -- 첫 번째 쿼리에서 사용된 값
SELECT HEX('text');   -- 두 번째 쿼리에서 사용된 값

이 때 첫 번째 HEX 값은 757365724476736E436F6465이 출력 됐고, 두 번째 HEX 값은 EFBBBF757365724476736E436F6465이 출력되었습니다.

 

여기에 있는 EFBBBF가 UTF-8 인코딩에서 사용되는 BOM입니다.

 

따라서 'text'를 크롬같은 곳에서 복붙 하지말고, 다시 수기로 입력하면 정상으로 뜨게 됩니다.

728x90
반응형