sql - 使用 postgreSQL 数据库进行查询

标签 sql postgresql quoted-identifier string-constant

我已经有一个由postgresql创建的数据库(由除我之外的另一个管理员提供),创建命令如下所示。

CREATE TABLE "Districts" (
    "Name" character varying(500),
    "ProvinceCode" text
);

查询将值插入到我的表中,如下所示:

Insert into Districts (Name,ProvinceCode) values ("Abc","Xyz"); `ERROR:  relation "districts" does not exist`

我也尝试过:

Insert into "Districts" (Name,ProvinceCode) values ("Abc","Xyz"); `ERROR:  column "name" of relation "Districts" does not exist`

还有:

Insert into "Districts" ("Name","ProvinceCode") values ("Abc","Xyz"); `ERROR:  column "Abc" does not exist`

我不知道语法是否正确。我真的需要有人帮忙。

最佳答案

要引用标识符,请使用 " (双引号)。(不带引号的字符也将被解释为标识符,只是忽略大小写(转换为小写)并在空格处分割。)

字符串文字周围的引号是'(单引号)。至少这是 SQL 标准的一部分。

因此,适合您的正确插入是:

INSERT INTO "Districts" ("Name", "ProvinceCode") VALUES ('Abc', 'Xyz');

无论如何,我通常不建议使用带引号的标识符(因为您总是需要随身携带它们,通常没有任何实际好处)。因此,如果可能的话,我建议将表及其列重命名为districts、name、province_code(但由于这在某种意义上不是您的表,因此可能为时已晚)。之后,您的插入内容将如下所示:

INSERT INTO districts (name, province_code) VALUES ('Abc', 'Xyz');

关于sql - 使用 postgreSQL 数据库进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58177411/

相关文章:

选择查询的 SQL 更新查询

SQL Server - 如何基于动态公式执行计算

sql - 为什么no_data_found ORA-01403是Oracle中的异常?

php - 重复插入/更新时时间戳为全零

sql - 根据 postgresql 中队列的初始日期进行计数

postgresql - Postgres 的列名或表名什么时候需要引号,什么时候不需要?

postgresql - JBoss 日志 Postgres 驱动是 "non-JDBC-compliant"

sql - 将天数分组为单行(汇总)

sql - 未找到 Postgresql 列,但在描述中显示

sql-server - SQL Server 2008 SP 执行时出现 QUOTED IDENTIFIER 错误