2017-02-27 23 views
1

我經歷了PostgreSQL字符類型的文檔。但仍然有一些問題需要PostgreSQL中字符類型的說明

「char」是固定長度i,e 1 如果是這樣,什麼是「char []」的長度,因爲我無法在pgadmin中更改它我認爲它用於可變長度字符數組。那麼,實際的默認大小是多少?

與「char」[]相比,字符有什麼用?現在我假設字符用於定義大小的固定長度字符數組。

爲什麼使用character []?

字符變化和字符變化有什麼區別?

+1

'[]'表示** **陣列,而不是一個單一的值:https://www.postgresql.org/docs/電流/靜態/ arrays.html –

回答

2

如果您來自C背景,PostgreSQL中的字符串類型是而不是字符數組。

對於PostgreSQL中的每種類型foo,都有一個對應的數組類型foo[],它表示foo類型的值的數組。只有在不打算在數據庫中操縱它們的情況下才使用數組類型;如果你這樣做,通常最好將數組規範化爲一個單獨的表。

撇開數組類型,有不同的字符類型:

  • "char"(需要雙引號):單個字符。主要用於目錄表。除非你知道你在做什麼,否則不要使用這種類型。

  • character(n)char(n):固定長度的字符串。無論您在那裏存儲什麼,它總是會在右側填充空格。行爲,如SQL標準所規定的,有時令人驚訝,所以你很少需要這種類型。

  • text:任意長度的字符串。這是字符串所需的類型,除非您希望數據庫施加長度限制。

  • character varying(n)varchar(n):這與具有附加長度限制的text相同。

要與例如圓形其關閉:

CREATE TABLE strtest(
    id serial PRIMARY KEY, 
    sc "char", 
    c character(10), 
    vc character varying(10), 
    vca character varying(10)[] 
); 

INSERT INTO strtest (sc, c, vc, vca) 
    VALUES (
     'x', 
     'short', 
     'short', 
     ARRAY['short1', 'short2', 'short3'] 
    ); 

SELECT sc, c, vc, vca[2] FROM strtest; 
sc |  c  | vc | vca 
----+------------+-------+-------- 
x | short  | short | short2 
(1 row)