zoukankan      html  css  js  c++  java
  • IBM Data Studio使用对象创建的双引号/大小写问题以及表/列重命名

    问题描述

    使用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)





  • 相关阅读:
    OleDbCommandBuilder 使用方法
    jquery table 的添加和删除
    OleCommand的SqlText占位符的问题
    一个用于整体移动文件夹的方法,简练实用
    .NET设计模式系列文章
    OleDbCommandBuilder
    MYSVW三周年
    Direct3D 开发之旅 3D 游戏基本概念的介绍1
    win8 开发之旅(10) 五子棋游戏开发 错误提醒和纠错
    C++ 学习之旅二——说一说C++头文件
  • 原文地址:https://www.cnblogs.com/xshrim/p/4048968.html
Copyright © 2011-2022 走看看