C#中嵌套引号使用及PostgreSQL大小写表名查询报错解决
问题解决:PostgreSQL表名大小写匹配的正确写法
你的错误根源是PostgreSQL的标识符规则:
- 单引号
'用于包裹字符串常量,不能用来定义表名、列名这类标识符 - 要区分大小写的标识符必须用**双引号
"**包裹
在C#中正确编写包含双引号的SQL语句有两种方式:
方式1:转义双引号
在常规字符串中,用反斜杠\转义双引号:
NpgsqlCommand cmd = new NpgsqlCommand("SELECT * FROM \"Users\";", conn);
方式2:使用逐字字符串
用@前缀定义逐字字符串,此时双引号需要用两个连续双引号表示:
NpgsqlCommand cmd = new NpgsqlCommand(@"SELECT * FROM ""Users"";", conn);
额外说明
如果你的表是创建时未加双引号(即CREATE TABLE Users (...)),PostgreSQL会自动将表名转为小写,此时直接写SELECT * FROM users;也能正常查询,无需额外引号。
内容的提问来源于stack exchange,提问作者Kilian
相关产品推荐
相关产品推荐

