【问题标题】:Can't create table with PostgreSQL including "#" (npgsql.NET)无法使用包含“#”的 PostgreSQL 创建表 (npgsql.NET)
【发布时间】:2022-11-21 21:04:04
【问题描述】:

所以我实际上有两个问题数据库.我实际上使用npgsql.NET使用 PostgreSQL 创建查询、连接等,但是我是这个数据库软件的新手。

首要问题

我得到了错误:

Npgsql.PostgresException: '42601: syntax error at or near "#"

POSITION: 16'

使用脚本后:

CREATE TABLE {textBox1.Text} (
    user_id serial PRIMARY KEY,
    username VARCHAR ( 50 ) UNIQUE NOT NULL,
    password VARCHAR ( 50 ) NOT NULL,
    email VARCHAR ( 255 ) UNIQUE NOT NULL,
    created_on TIMESTAMP NOT NULL,
        last_login TIMESTAMP
);

textbox1.Text 包括:Pronner#2223。

第二期

例如,当创建名为 PRONNER 的表时,它显示为 pronner。大写系统有什么问题?或者可能是因为我使用的是pgAdmin 4,所以我只是把它看作小写字母?

就像我在问题开头提到的那样,我对此很陌生,我曾经使用MySQL,所以语法略有不同,但系统却非常不同。

【问题讨论】:

    标签: c# .net postgresql npgsql


    【解决方案1】:

    As documented in the manual SQL 标识符中不允许使用 # 符号:

    SQL 标识符和关键字必须以字母(a-z,还有带变音符号的字母和非拉丁字母)或下划线 (_) 开头。标识符或关键字中的后续字符可以是字母、下划线、数字 (0-9) 或美元符号 ($)。请注意,根据 SQL 标准的字母,标识符中不允许使用美元符号,

    本章还记录了小写名称:

    引用标识符也使其区分大小写,而未引用的名称始终折叠为小写。例如,标识符 FOO、foo 和“foo”被 PostgreSQL 认为是相同的,但是“Foo”和“FOO”与这三个不同并且彼此不同。 (在 PostgreSQL 中将不带引号的名称折叠为小写与 SQL 标准不兼容,SQL 标准规定不带引号的名称应折叠为大写。因此,根据标准,foo 应该等同于“FOO”而不是“foo”。如果如果您想编写可移植的应用程序,建议您总是引用一个特定的名称或从不引用它。)

    【讨论】:

      猜你喜欢
      • 2018-05-04
      • 2016-07-06
      • 2016-12-04
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 2014-05-17
      • 2021-08-26
      相关资源
      最近更新 更多