文档首页/ 云数据库 GaussDB/ 开发指南(集中式_V2.0-8.x)/ FAQ/ 为什么查询中无法识别表名或者列名?
更新时间:2025-10-17 GMT+08:00
分享

为什么查询中无法识别表名或者列名?

答:在定义表时,如果标识符加上引号,表示标识符是大小写敏感的,数据库存储标识符时不改变大小写。如果标识符不加引号,表示标识符是大小写不敏感的,并且数据库将标识符转换为全小写形式存储。在访问表时,如果使用的标识符加上引号,则直接与数据库中的标识符进行匹配;如果标识符不加引号,则会将标识符转换为全小写后再与数据库中的标识符进行匹配。建议创建时统一使用小写。

示例如下:

--创建表。
gaussdb=# CREATE TABLE "TB_test" ("Tid" int, num int);

--查询表时不加双引号,默认都为小写,会报错。
gaussdb=# SELECT * FROM TB_test;
ERROR:  relation "tb_test" does not exist
LINE 1: SELECT * FROM TB_test;

gaussdb=# SELECT Tid FROM "TB_test";
ERROR:  Column "tid" does not exist
LINE 1: SELECT Tid FROM "TB_test"

--查询时加双引号。
gaussdb=# SELECT "Tid"  FROM  "TB_test";
 Tid 
-----
(0 rows)

--删除表。
gaussdb=# DROP TABLE "TB_test";

相关文档