2015-11-06 77 views
0

我有一个包含camelCased列名称的表(我现在非常遗憾)。如果我在列名周围使用双引号作为SELECT子句的一部分,它们可以很好地工作,例如, SELECT "myCamelCasedColumn" FROM the_table;。但是,如果我尝试在WHERE条款中执行相同操作,则会出现错误。在postgresql where子句中使用camelCased列

例如,SELECT * FROM the_table WHERE "myCamelCasedColumn" = "hello";给我错误column "hello" does not exist

我该如何解决这个问题?如果我不用双引号括住列,那么它只会抱怨column mycamelcasedcolumn does not exist

回答

6

在SQL字符串文字用单引号括起来,而不是双引号。

SELECT * 
FROM the_table 
WHERE "myCamelCasedColumn" = 'hello'; 

详情请参见手册:
http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

该手册也解释了为什么"myCamelCasedColumn"myCamelCasedColumn


东西在SQL不同一般来说,你应该带引号的标识符望而却步。他们比他们值得的更麻烦。如果你从不使用双引号,那么一切都会更容易。

1

问题是您使用双引号字符串作为"hello"。应该是'hello'。双引号是为标识符保留的。