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) ;