IBM IDAA 不允许我查询特定列
IBM IDAA won't let me query specific column
我设置了一个 IBM IDAA,我在其中使用 CREATE 语句创建了一个仅加速器 table:
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;
我收到一条错误消息:
`select col_1 来自 MY_USER.aot_table
COL_1 在其使用的上下文中无效。 SQLCODE=-206,SQLSTATE=42703,DRIVER=4.24.92`
有人知道为什么会这样吗?
如果您创建的 table 是在列名和小写列名周围加上双引号,如您的问题所示,那么您的查询也必须将列名加双引号并匹配列名大小写.
否则 Db2 会将未加引号的列名折叠为大写,这将与小写的列名不匹配,这将导致异常。
所以试试 select "col_1" from MY_USER.aot_table
,假设 tabschema 也是 MY_USER。注意引用的列名。
如果您不想在查询中用双引号引起来您的列名,那么请不要在 create table
语句中对列名使用双引号。查询中未使用的列名称将折叠为大写,这通常对 SQL.
更方便
我设置了一个 IBM IDAA,我在其中使用 CREATE 语句创建了一个仅加速器 table:
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;
我收到一条错误消息:
`select col_1 来自 MY_USER.aot_table
COL_1 在其使用的上下文中无效。 SQLCODE=-206,SQLSTATE=42703,DRIVER=4.24.92`
有人知道为什么会这样吗?
如果您创建的 table 是在列名和小写列名周围加上双引号,如您的问题所示,那么您的查询也必须将列名加双引号并匹配列名大小写.
否则 Db2 会将未加引号的列名折叠为大写,这将与小写的列名不匹配,这将导致异常。
所以试试 select "col_1" from MY_USER.aot_table
,假设 tabschema 也是 MY_USER。注意引用的列名。
如果您不想在查询中用双引号引起来您的列名,那么请不要在 create table
语句中对列名使用双引号。查询中未使用的列名称将折叠为大写,这通常对 SQL.