在PSQL中将字符串转换为十进制

时间:2016-04-02 05:48:03

标签: sql postgresql casting string-conversion

我正在尝试使用此命令将字符串转换为小数:

SELECT cast(minimum_ticket_price AS DECIMAL(6,2) 
FROM all_event_details 
WHERE minimum_ticket_price ~ E'^\\d+$';

但这实际上并没有更新我的数据库中的任何内容。它只显示终端中的选定列。我是否需要将选择与更新结合起来?我已经尝试过,但我必须使用语法错误,因为我无法将转换保存在数据库中。

这是我试过的:

UPDATE all_event_details 
   SET minimum_ticket_price = cast(minimum_ticket_price AS DECIMAL(6,2)) 
WHERE ( minimum_ticket_price <> '') IS TRUE;;

2 个答案:

答案 0 :(得分:0)

更新为minimum_ticket_price列的数据可以支持的数据类型是可能的,否则会出错。 例如,如果minimum_ticket_price列数据类型是varchar,则代码必须正常工作。

答案 1 :(得分:0)

你正在做什么? 首先添加新列,十进制(但我建议使用基本数据类型,如真或双精度,最有效)

 ALTER TABLE my_table ADD COLUMN minimum_ticket_priceR  real ;

大于

 UPDATE all_event_details 
    SET minimum_ticket_priceR = to_number(coalesce(minimum_ticket_price,"0"),"999999D99") --for each row

比我打算删除colum minimum_ticket_price并重命名另一列(使用ALTER TABLE): 你做的是不明白,如果minimum_ticket_price是字符串,你不能设置一个数字......如果是一个数字没有意义将其设置为字符串