在postgresql where子句中使用camelCased列

时间:2015-11-06 11:52:23

标签: postgresql

我有一个带有camelCased列名的表(我现在深感遗憾)。如果我在列名称周围使用双引号作为var addresses = Builder<Address>.CreateListOfSize(20) .All() .With(c => c.Street = Faker.StreetName().First()) .With(c => c.State = Faker.UsState().First()) .With(c => c.ZipCode = Faker.ZipCode().First()) .Build(); 子句的一部分,它们可以正常工作,例如SELECT。但是,如果我尝试在SELECT "myCamelCasedColumn" FROM the_table;子句中执行相同的操作,那么我会收到错误。

例如,WHERE给了我错误SELECT * FROM the_table WHERE "myCamelCasedColumn" = "hello";

我该如何解决这个问题?如果我没有用双引号括起该列,那么它只会抱怨column "hello" does not exist

2 个答案:

答案 0 :(得分:6)

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

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

有关详细信息,请参阅手册:
http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

本手册还解释了为什么"myCamelCasedColumn"在SQL中与myCamelCasedColumn

不同

通常,您应远离引用的标识符。他们比他们的价值更麻烦。如果你从不使用双引号,一切都会容易得多。

答案 1 :(得分:1)

问题是你对strin literal "hello"使用双引号。应该是'hello'。双引号保留用于标识符。