将varchar转换为vertica中的数字

时间:2017-11-07 08:42:46

标签: database vertica

是否可以使用alter statement将varchar(10)列更改为数据类型numeric(10,4)

我用alter命令尝试了但是得到了一个恐怖:

cannot convert column from varchar(10) to numeric(10,4)

1 个答案:

答案 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;