当前位置:  开发笔记 > 数据库 > 正文

为什么在DB2中有一个名为ORDER的列?

如何解决《为什么在DB2中有一个名为ORDER的列?》经验,为你挑选了1个好方法。

在DB2中,您可以将列命名为ORDER并编写SQL

SELECT ORDER FROM tblWHATEVER ORDER BY ORDER

甚至不需要在列名称周围放置任何特殊字符.这让我痛苦,我不会介入,但我的问题是:为什么数据库允许使用SQL关键字作为对象名称?当然不允许这样更有意义吗?



1> 小智..:

我基本上同意不应该允许关键字作为标识符的观点.大多数现代计算语言都有20个或30个关键字,在这种情况下,暂停使用它们作为标识符是完全合理的.不幸的是,SQL来自旧的COBOL语言学校("计算语言应尽可能与英语相似").因此,SQL(如COBOL)有几百个关键字.

我不记得SQL标准是否说明了保留字是否必须被允许作为标识符,但鉴于广泛(过多!)词汇表,几个SQL实现允许它并不令人惊讶.

话虽如此,使用关键字作为标识符并不像SQL中引用标识符的整体概念那么愚蠢(这些都不是DB2特定的).允许区分大小写的标识符是一回事,但带引号的标识符允许包括空格,变音符号在内的所有类型的无意义,在某些实现中(是的,包括DB2),控制字符!请尝试以下示例:

CREATE TABLE "My
Tablé" ( A INTEGER NOT NULL );

是的,这是标识符中间的换行符,最后是e-acute ......(这导致有趣的猜测是什么编码用于数据库元数据,因此非Unicode数据库是否允许比方说,包含日文列名的表定义).

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有