如何在DB2中访问具有相同名称的表

时间:2012-10-17 15:08:41

标签: command-line db2

我创建了以下两个只有不同情况的表:

tables.sql:

CREATE TABLE T1 (C1 INTEGER);
INSERT INTO T1 VALUES (1);
CREATE TABLE "t1" (C1 INTEGER);
INSERT INTO "t1" VALUES (2);
CREATE TABLE T2 (C1 INTEGER, "c1" integer);
INSERT INTO T2 VALUES (3, 4);

命令

db2 -tvf tables.sql

当我想直接从CLP查询表时,我无法区分这两种类型的情况。如何查询表T1,另一个查询到表t1。列C1和c1都相同?

2 个答案:

答案 0 :(得分:1)

要在Windows中从CLP查询这些表,您必须执行以下操作:

表T1(最简单的一个):

db2 select * from T1

或(这是因为*的Linux中的方式)

db2 "select * from T1"

表t1

db2 "select * from ""t1"""

对于列类似

db2 select C1 from T2

对于其他

db2 "select ""c1"" from T2"

确保整个命令涉及引号。如果您发出以下命令:

db2 select ""c1"" from T2

它将返回C1。这个命令也一样:

db2 select * from ""t1""

返回T1。

答案 1 :(得分:0)

如果您在Linux shell上使用CLP,shell将解释引号并删除它们。在Linux / Unix上使用反斜杠转义引号

db2 "INSERT INTO \"t1\" VALUES (...)"