Bạn có thể thử sử dụng USING
:
USING
tùy chọn mệnh đề chỉ định cách tính giá trị cột mới từ giá trị cũ; nếu bị bỏ qua, chuyển đổi mặc định giống như một phép gán được truyền từ kiểu dữ liệu cũ sang kiểu mới. AUSING
mệnh đề phải được cung cấp nếu không có sự chuyển nhượng ngầm hoặc chuyển từ kiểu cũ sang kiểu mới.
Vì vậy, điều này có thể hoạt động (tùy thuộc vào dữ liệu của bạn):
alter table presales alter column code type numeric(10,0) using code::numeric;
-- Or if you prefer standard casting...
alter table presales alter column code type numeric(10,0) using cast(code as numeric);
Điều này sẽ không thành công nếu bạn có bất kỳ thứ gì trong code
không thể được chuyển thành số; nếu SỬ DỤNG không thành công, bạn sẽ phải xóa dữ liệu không phải số bằng tay trước khi thay đổi loại cột.