解決postgreSql 將Varchar類型字段修改為Int類型報錯的問題
項目使用postgreSql數據庫,先需要將庫中的某個表中的某個字段類型由Varchar改成Int,直接右鍵設計表,修改類型為int,保存的時候報錯,錯誤如下:
意思就是,這個crt_user字段不能自動轉換成成類型bigint,需要使用USING表達式來轉換。
這是在庫中運行修改字段的類型的sql:
ALTER TABLE auth_client_service ALTER COLUMN crt_user SET DATA TYPE int8 USING crt_user:: int8, ALTER COLUMN crt_user SET DEFAULT 0;
至此,類型修改成功。
補充:PostgreSQL中將Integer類型的字段轉換成Varchar類型的字段
rt,直接用pgadmin是沒有辦法進行這個轉換的。
通過執行sql卻是可以做到的,關鍵是添加USING表達式,這個表達式的意思是如何初始化這個字段。
比如下面的例子將整形轉換成varchar(16)類型
ALTER TABLE app.app_high_school_score
ALTER COLUMN chinese TYPE character varying(16) USING (chinese::character varying(16));
USING 中也可以使用CAST操作符,例如:
USING CAST(column_name AS integer)
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- PostgreSQL標準建表語句分享
- Postgresql數據庫character varying和character的區別說明
- PostgreSQL 如何修改文本類型字段的存儲方式
- postgresql 修改字段長度的操作
- PostgreSQL12.5中分區表的一些操作實例