簡體   English   中英

postgres-(列表)中的位置-列不存在

[英]postgres - where in (list) - column does not exist

我來自SQL Server,很驚訝看到以下查詢不起作用:

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"

我正在使用pgAdmin和最新的postgresql版本。 還有其他方法可以運行此查詢嗎?

您需要使用'

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

我來自SQL Server,很驚訝地看到以下查詢不起作用

然后,您將SET QUOTED_IDENTIFIER AS OFF SET QUOTED_IDENTIFIER OFF 默認情況下為ON

SET QUOTED_IDENTIFIER為ON時 ,所有用雙引號引起來的字符串都被解釋為對象標識符

校驗:

SET QUOTED_IDENTIFIER OFF;
SELECT "A"


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

LiveDemo

對字符串常量使用單引號:

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

雙引號是與表名和列名一起使用的轉義字符。 因此,錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM