我有一个带有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
。
答案 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'
。双引号保留用于标识符。