问题描述
我一直在尝试将数据库从MysqL迁移到Postgres,但是遇到了一个大问题,我似乎找不到解决方法。
我在名为“ users”的表中插入了一行,并且该表具有诸如UserID,Username等的列,如下所示:
现在,在访问数据库并获取数据的C#代码中,我将此查询发送到数据库:
SELECT * FROM users WHERE 'Username'='Eevee';
我尝试过,但这只是导致我没有从该查询中获取任何行,如下所示:
我尝试查询时不带列名的引号,但这只会导致我得到
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行作为响应。