如何将两列合并为新列?SQL合并列报错求助
解决PostgreSQL中合并大小写敏感列的问题
问题根源
你的报错提示已经给出关键线索:PostgreSQL默认会将未加双引号的标识符(列名、表名)转换为小写。如果你的First_name和Surname列是在创建时通过双引号保留了驼峰大小写(例如CREATE TABLE full_dataset ("First_name" text, "Surname" text)),那么直接写First_name会被数据库识别为first_name,导致找不到对应列。
错误写法分析
- 尝试语句1:
full_dataset.First_name会被数据库转译为full_dataset.first_name,但实际列名是大小写敏感的First_name,因此报错。 - 尝试语句2:
"full_dataset.First_name"是把整个字符串当作一个列名来查找,而非full_dataset表下的First_name列,自然不存在。
正确写法
直接对大小写敏感的列名添加双引号即可,同时字符串常量建议使用单引号(SQL标准写法):
SELECT *, CONCAT("First_name", ' ', "Surname") AS Full_name FROM full_dataset;
如果需要明确指定表名,格式应为表名."列名":
SELECT *, CONCAT(full_dataset."First_name", ' ', full_dataset."Surname") AS Full_name FROM full_dataset;
额外提示
如果后续不想处理大小写敏感的麻烦,可以在创建表时统一使用小写列名(例如first_name、surname),这样查询时无需额外添加双引号。
内容的提问来源于stack exchange,提问作者tommasologi
相关产品推荐
相关产品推荐

