create table test(id varchar );
insert into test values('1');
insert into test values('11');
insert into test values('12');
select * from test
--Result--
id
character varying
--------------------------
1
11
12
Bạn có thể thấy từ bảng trên rằng tôi đã sử dụng kiểu dữ liệu - character varying cho id cột. Nhưng đó là một sai lầm vì tôi luôn cung cấp integers dưới dạng id . Vì vậy, sử dụng varchar đây là một thực hành xấu. Vì vậy, hãy thử thay đổi loại cột thành integers .
ALTER TABLE test ALTER COLUMN id TYPE integer;
Nhưng nó trả về:
Điều đó có nghĩa là chúng tôi không thể thay đổi loại dữ liệu một cách đơn giản vì dữ liệu đã có sẵn trong cột. Vì dữ liệu thuộc loại character varying Postgres không thể mong đợi nó là số nguyên mặc dù chúng tôi chỉ nhập số nguyên. Vì vậy, bây giờ, như Postgres đề xuất, chúng tôi có thể sử dụng USING biểu thức để truyền dữ liệu của chúng tôi thành số nguyên.
ALTER TABLE test ALTER COLUMN id TYPE integer USING (id::integer);
Nó hoạt động.
Vì vậy, bạn nên sử dụng
alter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;