0

我正在尝试使用 pgAdmin4 在 PostgreSQL 中删除一行。这是我的命令:

DELETE FROM commissions_user 
WHERE first_name = "Steven";

由于某种原因,该错误指出

ERROR:  column "Steven" does not exist
LINE 2: WHERE first_name = "Steven";
                           ^
SQL state: 42703
Character: 50

奇怪,为什么“Steven”被检测为列名,列名不应该是first_name吗?

4

2 回答 2

3

改用单引号

DELETE FROM commissions_user 
WHERE first_name = 'Steven';

双引号可用于表和列,单引号可用于字符串。

前任。

DELETE FROM "commissions_user"
WHERE "first_name" = 'Steven';
于 2022-01-28T12:30:46.663 回答
1

https://www.postgresql.org/docs/current/sql-syntax-lexical.html
双引号:

常用的约定是将关键字大写,名称小写,例如:

UPDATE my_table SET a = 5;

还有第二种标识符:分隔标识符或 引用标识符它是通过用双引号 (") 将任意字符序列括起来形成的。分隔标识符始终是标识符,而不是关键字。因此“select”可用于引用名为“select”的列或表,而不带引号的选择将被视为关键字,因此在需要表或列名的地方使用时会引发解析错误。示例可以使用带引号的标识符编写,如下所示:
UPDATE "my_table" SET "a" = 5;


单引号
https ://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS

SQL 中的字符串常量是由单引号 (') 限定的任意字符序列,例如“这是一个字符串”。要在字符串常量中包含单引号字符,请写入两个相邻的单引号,例如,'Dianne''s horse'。请注意,这与双引号字符 (") 不同

于 2022-01-28T13:06:53.940 回答