Trong trường hợp bạn đến từ nền C, kiểu chuỗi ký tự trong PostgreSQL là không một mảng các ký tự.
Đối với mỗi loại foo
trong PostgreSQL, có một kiểu mảng tương ứng foo[]
biểu thị một mảng giá trị kiểu foo
. Chỉ sử dụng các kiểu mảng nếu bạn không có kế hoạch thao tác nhiều với chúng bên trong cơ sở dữ liệu; nếu bạn làm vậy, thường tốt hơn là chuẩn hóa mảng thành một bảng riêng biệt.
Bỏ qua các kiểu mảng, có các kiểu ký tự khác nhau:
-
"char"
(bắt buộc phải có dấu ngoặc kép):một ký tự đơn. Chủ yếu được sử dụng trong các bảng danh mục. Không sử dụng loại này trừ khi bạn biết mình đang làm gì. -
character(n)
hoặcchar(n)
:chuỗi ký tự có độ dài cố định. Không có vấn đề gì bạn lưu trữ ở đó, nó sẽ luôn luôn được đệm bằng các khoảng trống ở phía bên phải. Hành vi, như được quy định bởi tiêu chuẩn SQL, đôi khi gây ngạc nhiên, vì vậy bạn hiếm khi muốn loại này. -
text
:chuỗi ký tự có độ dài tùy ý. Đây là kiểu bạn muốn cho các chuỗi ký tự trừ khi bạn muốn cơ sở dữ liệu áp đặt giới hạn độ dài. -
character varying(n)
hoặcvarchar(n)
:cái này giống vớitext
với giới hạn độ dài bổ sung.
Để làm tròn nó bằng một ví dụ:
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)