ztao2620
作者ztao2620·2010-10-17 10:37
软件开发工程师·广东科学技术职业学院

如何定义和使用含小写字符的DB2表名

字数 2371阅读 1635评论 0赞 0

【IT168 技术】  今天在查warehous数据库下的表Linux_CPU

  db2 "select * from Linux_CPU" 总是提示表未定义.后来发现表名大小写问题,应该在db2提示符下运行 select * from "Linux_CPU"或者db2 "select * from "Linux_CPU""才正确,.晚上在IBM网站上查到详细说明.

  环境:

  产品:DB2 UDB

  平台:跨平台

  版本:v8

  问题描述:

  在 DB2 UDB 中除非另外指定,否则,所有名称都可包括下列字符:

  ·A 到 Z。当在大多数名称中使用时,字符 A 到 Z 将从小写形式转换为大写形式。

  ·0 到 9

  ·@、#、$ 和 _(下划线)

  ·名称不能以数字或下划线字符开始。

  作为数据库对象的表,其命名同样遵循上述规则,因此即使用户创建表时使用的名称是小写的,DB2 仍会自动将其转化为大写的形式,如: 

#div_code img{border:0px;}
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1 db2 create table testname (a1 int)
2 DB20000I SQL 命令成功完成。
3
4 db2 list tables
5
6 表/视图    模式 类型 创建时间
7 ------------------------------- --------------- ----- --------------------------
8 :
9 TESTNAME TESTUSER T 2005-09-24-18.15.30.428001
10 :

  如果用户希望创建的表名含有小写字符时应如何处理呢?这里简单介绍一下其创建和使用的方法。

  解答:

  如果需要创建含小写英文字符的 DB2 表名,应使用双引号将表名括起来,为避免双引号被转义,需在双引号前加上转义字符“”。以创建一个名为 TestName 的表为例,其创建语句应写为:

#div_code img{border:0px;}
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1 db2 "create table "TestName" (col1 int)" -- Windows & Unix 环境下

  如果创建的表名中包含有“$”的特殊字符时,在 Unix 环境下,还需要在这些字符的前面也加一个转义字符,以创建名为 Test$Name 的表为例,创建语句应为:

#div_code img{border:0px;}
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1 db2 create table "Test$Name" (col1 int)

  而在 Windows 环境下,可直接写为:

#div_code img{border:0px;}
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1 db2 create table "Test$Name" (col1 int)

  表创建完成之后,在以后对这些表进行引用的时候,同样需要象在创建表的语句中那样对表名加转义符进行引用,如:

  Windows 环境下:

#div_code img{border:0px;}
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1 db2 insert into "Test$Name" values (1),(2)
2 DB20000I SQL 命令成功完成。
3
4 db2 select * from "Test$Name"
5
6 COL1
7 -----------
8 1
9 2
10 2 条记录已选择。

  Unix 环境下:

#div_code img{border:0px;}
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1 db2 "insert into "Test$Name" values (1),(2)"
2 DB20000I SQL 命令成功完成。
3
4 db2 "select * from "Test$Name""
5
6 COL1
7 -----------
8 1
9 2
10 2 条记录已选择。

  当然除举例中所使用的“$”特殊字符外,还有一些其它的特殊字符,在今后使用中,应根据情况尝试加上转义符,以创建用户需要的表名。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广