[英]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'.
對字符串常量使用單引號:
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.