2015-11-03 144 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 
) 

我,我也相信我們的很多行業中,通常會認爲包含空格的名稱(或需要我的任何其它字符引用該名稱)作爲缺乏經驗或缺乏知識的標誌。