2015-11-03 143 views
2

我可以创建一个列的单名一个表,例如:创建多个单词表中单列

CREATE TABLE testTable 
(
    Name text, 
    Age int 
) 

我如何可以创建多个单词的单个列?例如:

CREATE TABLE testTable 
(
    Person Name text, 
    Person Age int 
) 

当我使用这个,它给了我错误。找不到解决方案。

+0

定界符在'''postgres中,但你为什么要这么做?每次引用该列时,您都必须使用分隔符 – Mihai

+0

以下是手册的相关链接:http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX -IDENTIFIERS –

回答

3

报价与"列名:

CREATE TABLE testTable (
"Person Name" text, 
"Person Age" int); 

SqlFiddleDemo

Quoted identifiers

有第二种标识符:分隔IDE标识符或引用标识符。它是由在双引号(“)。包围的任意字符序列形成

引号标识符可以包含任何字符,除了与代码零的字符 。(要包括一个双引号,写两个双引号) 这使得构建,否则 是不可能的表或列名称,如含有空格或与号的该 长度的限制仍然适用。

+1

@joojoo:虽然这是正确的答案,并且会起作用,但不推荐使用这种列名称。从长远来看,这会给你带来很多麻烦,实际上它值得。 –

+1

明白了。谢谢@ lad2025! –

1

这是可能的报价(")这些名称强制数据库执行此操作。在实践中,正如一些评论中指出的那样,这是极其令人讨厌的和非生产性的。如果你这样做,那么时候你需要引用此列,你将不得不

  • 引号,用双引号
  • 的情况下精确匹配

所以这样的:

SELECT testTable."person name" FROM testTable 

会抛出错误,因为我没有大写pn

这会导致浪费大量时间查找名称的确切格式,每次引用它。

将更加普遍和简单的解决方案是简单地使用强调

CREATE TABLE test_table (
    person_name text, 
    person_age int 
) 

我,我也相信我们的很多行业中,通常会认为包含空格的名称(或需要我的任何其它字符引用该名称)作为缺乏经验或缺乏知识的标志。