我有一个数据库表,persons
在另一个团队传下来的 Postgres 中,有一个列名,"first_Name"
。现在我尝试使用 PG Commander 来查询这个表的这个列名。
select * from persons where first_Name="xyz";
它只是返回
错误:列“first_Name”不存在
不确定我是否在做一些愚蠢的事情,或者是否有解决我所缺少的问题的方法?
身份标识(包括列名)not双引号在 PostgreSQL 中被折叠为小写。创建的列名称双引号因此保留的大写字母(和/或其他语法违规)在其余生中必须用双引号引起来:
"first_Name" → "first_Name" -- upper-case "N" preserved
"1st_Name" → "1st_Name" -- leading digit preserved
"AND" → "AND" -- reserved word preserved
But:
first_Name → first_name -- upper-case "N" folded to lower-case "n"
1st_Name → Syntax error! -- leading digit
AND → Syntax error! -- reserved word
Values(字符串文字/常量)包含在单引号:
'xyz'
So, yes, PostgreSQL 列名区分大小写(当用双引号引起来时):
SELECT * FROM persons WHERE "first_Name" = 'xyz';
标识符手册。 https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
我的长期建议是只使用合法的小写名称,因此不需要双引号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)