복붙노트

[SQL] 포스트 그레스는 - 어디에서 (목록) - 열이 존재하지 않습니다

SQL

포스트 그레스는 - 어디에서 (목록) - 열이 존재하지 않습니다

나는 SQL 서버에서 오는 그리고 난 다음 쿼리가 작동하지 않는 것을보고 놀랐습니다 :

DELETE FROM user_job_titles WHERE id IN (
"c836d018-1d12-4507-a268-a4d80d6d3f54",
"d0961a90-7d31-4c4c-9c1b-671115e3d833",
"62dda420-6e62-4017-b41d-205c0aa82ead"
)

user_job_titles에는 다음과 같은 열이 곳이 있습니다

id
user_id
job_title_id

오류 :

ERROR:  column "c836d018-1d12-4507-a268-a4d80d6d3f54" does not exist
LINE 2: "c836d018-1d12-4507-a268-a4d80d6d3f54"

나는 최신의 PostgreSQL 버전 pgAdmin를 사용하고 있습니다. 이 쿼리를 실행할 수있는 다른 방법이 있습니까?

해결법

  1. ==============================

    1.문자열 상수에 대한 작은 따옴표를 사용합니다 :

    문자열 상수에 대한 작은 따옴표를 사용합니다 :

    DELETE FROM user_job_titles
        WHERE id IN ('c836d018-1d12-4507-a268-a4d80d6d3f54',
                     'd0961a90-7d31-4c4c-9c1b-671115e3d833',
                     '62dda420-6e62-4017-b41d-205c0aa82ead'
                    );
    

    따옴표는 테이블과 컬럼 이름으로 사용되는 이스케이프 문자입니다. 따라서 오류가 발생했습니다.

  2. ==============================

    2.당신은 '와 문자열 리터럴을 인용 할 필요가

    당신은 '와 문자열 리터럴을 인용 할 필요가

    DELETE FROM user_job_titles 
    WHERE id IN (
    'c836d018-1d12-4507-a268-a4d80d6d3f54',
    'd0961a90-7d31-4c4c-9c1b-671115e3d833',
    '62dda420-6e62-4017-b41d-205c0aa82ead'
    );
    

    그럼 당신은 SET QUOTED_IDENTIFIER AS OFF 있습니다. 기본적으로는 ON입니다.

    검사:

    SET QUOTED_IDENTIFIER OFF;
    SELECT "A"
    
    
    -- The same behaviour as in Postgresql
    SET QUOTED_IDENTIFIER ON;
    SELECT "A"
    -- Invalid column name 'A'.
    

    LiveDemo

  3. from https://stackoverflow.com/questions/35814771/postgres-where-in-list-column-does-not-exist by cc-by-sa and MIT license