Postgres:列不存在

问题描述

我一直在尝试将数据库MysqL迁移到Postgres,但是遇到了一个大问题,我似乎找不到解决方法

我在名为“ users”的表中插入了一行,并且该表具有诸如UserID,Username等的列,如下所示:

enter image description here

现在,在访问数据库获取数据的C#代码中,我将此查询发送到数据库

SELECT * FROM users WHERE 'Username'='Eevee';

我尝试过,但这只是导致我没有从该查询获取任何行,如下所示:

enter image description here

我尝试查询时不带列名的引号,但这只会导致我得到

ERROR:  column "username" does not exist
LINE 1: SELECT * FROM users WHERE Username='Eevee'
                                  ^
HINT:  Perhaps you meant to reference the column "users.Username".

我的一位朋友暗示会发生这种情况,因为Postgres使引号之外的所有内容都变为小写,但是我们又回到了另一个问题。

我是Postgres的新手,我正在尝试学习这一点,但这是一堵坚硬的墙,我似乎无法修复自己。

谢谢!

解决方法

最好不要具有大小写混合的列或表。如果碰巧有一个,则应将标识符名称用双引号"代替,而不是将单引号括起来用于字符串文字:

SELECT * FROM users WHERE "Username" = 'Eevee'

P.S。在第一种情况下,您只比较了两个字符串'Username''Eevee',它们自然是不相似的。因此,您得到0行作为响应。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...