IBM Data Studio使用----对象创建的双引号/大小写问题以及表/列重命名

本文介绍了在IBM Data Studio中创建DB2对象时遇到的双引号和大小写问题。当使用Data Studio创建的表名和列名包含小写字母时,会自动添加双引号,并导致大小写敏感。解决方案包括统一使用大写字母、手动编写SQL、修改DDL生成设置或通过重命名表和列来消除双引号。DB2的表重命名和列重命名语句也进行了说明。

问题描述

使用Data Studio进行表的创建后,对该表使用查询语句总是会出现“XXX是一个未定义的名称”的错误。如图:



使用Data Studio的默认设置创建的表(非手动SQL脚本创建),无论是在Data Studio脚本编辑器还是命令行中都会出现这种错误,原因在于使用Data Studio自动建表时自动生成的DDL中会对所有的对象名添加双引号。如图:


也就是说,SQL语句中的表名和列名都需要加上双引号才能正常执行。(注:字符串是单引号)如上面的查询语句改为:

select * from "Student"

就能够执行了。还要注意的是,DB2 中对于双引号括起来的表名,列名是大小写敏感的,"Student"写成"student"同样会出错。


解决办法

其实,出现这种双引号的问题的原因是DB2的对象大小写规则的问题。

使用SQL创建表或列对象时指定的表名,列名无论大小写,DB2全部都会自动转换为大写。如创建名为Student的表,创建完成后表名变成STUDENT。

如果一定要使用小写,就需要使用双引号将表名,列名等对象括起来,这样DB2就不会进行自动转换了,但同时在这样的表,列参与查询时,也必须使用双引号括起来。

预防双引号的产生

而在Data Studio中,自动生成DDL的默认设置是:一旦对象名含小写字符,就使用双引号括起来,全大写就不用双引号。例如上图中的DLL,Student,Name,Age都自动加了双引号,但ID就没有加。

所以解决的办法有以下几种:

1.指定表名,列名等对象时都统一指定为大写的;

2.手动使用SQL语句完成操作,避免使用DDL自动生成(避免多管闲事);

3.修改自动生成的DDL后再执行(去掉双引号后创建出来的对象就都是大写的);

4.设置Data Studio。在“首选项”->“数据管理”->“DDL生成”中,去掉“缺省情况下数据库对象标识加上引号”前的勾,这样生成的DDL就不会带双引号了。不过这个设置在我的Ubuntu下无效,不知道是不是个例。

处理产生的双引号

如果带双引号的表或列已经生成了,想要去掉双引号该怎么办呢?(毕竟带双引号查询不方便)

方法就是进行表或列的重命名。

DB2的表重命名语句是:

RENAME TABLE 表名 TO 新表名    

(无论新表名是大写还是小写,都自动转换为大写,如:rename table "Student" to student,重命名表为STUDENT。索引重命名语法也一样)

DB2的列重命名语句是:

ALTER TABLE 表名 RENAME   COLUMN  列名 TO 新列名

(同样,新列名也自动转换为大写。如alter table STUDENT rename column "Name" to name,重命名列Name为NAME)





评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值