1

我创建了以下两个表,它们只是不同的情况:

表.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 列都一样吗?

4

2 回答 2

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 被退回。

于 2012-10-17T15:08:41.117 回答
0

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

db2 "INSERT INTO \"t1\" VALUES (...)"
于 2012-10-18T11:54:43.293 回答