0

我有一个 IBM IDAA 设置,我使用 CREATE 语句创建了一个仅限加速器的表:

CREATE TABLE aot_table ( "col_1" decimal(11,0) NOT NULL , "col_2" smallint, "col_3" smallint, ) IN ACCELERATOR my_accel;

然后我用 INSERTS 手动加载了测试数据。当我查询它时:

SELECT * from MY_USER.aot_table;

我按预期得到数据。

但是,如果我尝试直接查询 col_1,如下所示:

SELECT col_1 from MY_USER.aot_table;

我收到一条错误消息:

`从 MY_USER.aot_table 中选择 col_1

COL_1 在使用它的上下文中无效。SQLCODE=-206,SQLSTATE=42703,驱动程序=4.24.92`

有谁知道为什么会这样?

4

1 回答 1

1

如果您在列名和小写列名周围使用双引号创建表,如您的问题所示,那么您的查询还必须双引号列名并匹配列名大小写。

否则 Db2 会将未加引号的列名折叠为大写,这将与小写列名不匹配,这将导致异常。

所以尝试一下select "col_1" from MY_USER.aot_table,假设 tabschema 也是 MY_USER。注意引用的列名。

如果您不想在查询中用双引号括起您的列名,则不要在create table语句中的列名周围使用双引号。然后,查询中未加引号的列名将折叠为大写,这通常对 SQL 更方便。

于 2020-02-28T14:49:36.297 回答