是否可以使用alter statement将varchar(10)
列更改为数据类型numeric(10,4)
。
我用alter命令尝试了但是得到了一个恐怖:
cannot convert column from varchar(10) to numeric(10,4)
答案 0 :(得分:2)
您无法直接从VARCHAR转换为数字类型,但您可以通过创建临时(数字)列,根据当前列填充它,然后重命名来解决限制。填充它时,您需要确保该值实际上是一个数字,例如它不包含逗号作为分隔符,标点符号如$等。
documentation给出了这个示例,其中原始价格列的值为' $ 50.00':
ALTER TABLE sales ADD COLUMN temp_price NUMERIC(10,2) DEFAULT
SUBSTR(sales.price, 2)::NUMERIC;
ALTER TABLE sales ALTER COLUMN temp_price DROP DEFAULT;
SELECT MAKE_AHM_NOW();
ALTER TABLE sales DROP COLUMN price CASCADE;
ALTER TABLE sales RENAME COLUMN temp_price to price;