繁体   English   中英

带有空格的Oracle表列名

[英]Oracle table column name with space

是否可以创建一个包含空格的列名称的表? 如果是这样,我该如何创建和使用它?

这是可能的,但这是不可取的。 您需要将列名括在双引号中。

create table my_table ("MY COLUMN" number);

但请注意文档中的警告:

注意 :Oracle建议不要对数据库对象名称使用带引号的标识符。 SQL * Plus接受这些带引号的标识符,但在使用管理数据库对象的其他工具时它们可能无效。

该名称将区分大小写,并且每次引用时都必须用双引号将名称括起来:

select "MY COLUMN" from my_table;

所以......不,这是我的建议......

是的,这是可能的。 您必须确保引用列名称。 例如:

CREATE TABLE Fubar ("Foo Bar" INT);
INSERT INTO Fubar VALUES (1337);
SELECT "Foo Bar" FROM SpaceMonster

尽管有可能,但这并不是一个好主意。 如果只用下划线替换所有空格,你可能会避免很多痛苦。

如果你恰当地引用它们,你可以(参见Oracle文档 )。 但是我怀疑这不是一个好主意,因为你必须引用一切。 通常,db命名标准/约定(例如此处此处 )有利于在空白上使用下划线(不需要引用)。

可以通过在两个" example:”My columN“之间命名列,列名称变为区分大小写,这意味着。

SELECT "my column" from table; --NOT OK
SELECT "My columN" from table; --OK

这是为oracle定义的列规则

列(表格)

  1. 所有列均采用{alias} _ {colname}格式。 例如prs_id,prs_name,prs_adr_id,adr_street_name。 这保证了列名在模式中是唯一的,除了来自另一个表的非规范化列,使用触发器或应用程序逻辑填充。
    1. 所有列都是单数。 如果您认为需要复数列名,请三思而后行,是否是正确的设计? 通常,这意味着您在同一列中包含多个值,应避免使用。
    2. 所有表都具有{alias} _id形式的代理主键列,这是表中的第一列。 例如,prs_id,mat_id,adr_id。

您可以使用“”始终为列名称bu添加别名

你有Google吗? 我做了 - 第6个链接是这个 ,我在其中找到以下内容:

create table employee (
   "First Name" varchar2(20),
   "Last Name" varchar2(20),
   Address varchar2(60),
   Phone varchar2(15),
   Salary number,
   EmpID number,
   DeptID number
); 

...当我在10g中尝试时,它工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM