늒네 기록

[postgresql] json 필드에 작은 따옴표가 있을때 insert하기 본문

DB 공부 기록/postgresql

[postgresql] json 필드에 작은 따옴표가 있을때 insert하기

jaeha lee 2020. 11. 21. 19:47

우리에게 json_field라는, json형식의 칼럼이 들어있는 mytable이라는 테이블이 주어져있다고 하자. 예시 상황이니 다른 칼럼들을 신경쓰지 말고, 아래 sql문이 에러 없이 돌아가는 테이블이라고 치자.

1
2
3
4
5
6
7
8
9
INSERT INTO mytable (json_field)
VALUES (
  '{
    "title": "hello",
    "content": "never mind",
    "date": "2020-11-21",
    "tags": ["diary", "2020-11"]
  }'
);
cs

대강 상황을 만들어보자면, 우리는 테이블에 제목, 내용, 날짜, 태그가 들어있는, 게시글 같은 걸 저장하려 한다고 해보자. 그렇다면, 여기서 제목을 "I'm here!" 같이, 작은 따옴표가 들어가도록 지어서 테이블에 넣으려고 하면 어떻게 될까?

1
2
3
4
5
6
7
8
9
INSERT INTO mytable (json_field)
VALUES (
  '{
    "title": "I'm here!",
    "content": "error!",
    "date": "2020-11-21",
    "tags": ["diary", "2020-11"]
  }'
);
cs

당장 위의 코드를 시각화할때 사용한 color scripter에서부터, I 옆의 작은 따옴표 뒤로 색이 달라져버린 것을 볼 수 있다. 즉, json 값을 감싸는 작은따옴표가 끊어져버린 것. 이런 경우에는 어떻게 작은 따옴표를 살릴 수 있을까?

 

답은, 작은 따옴표를 입력하고 싶으면 작은 따옴표를 연이어 두개를 사용하는 것. 아래와 같이 쓰면 된다.

1
2
3
4
5
6
7
8
9
INSERT INTO mytable (json_field)
VALUES (
  '{
    "title": "I''m here!",
    "content": "error!",
    "date": "2020-11-21",
    "tags": ["diary", "2020-11"]
  }'
);
cs

이렇게 하면 원하는 대로 json 필드를 insert할 수 있음을 확인할 수 있다.

반응형
Comments