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

问题描述 投票:0回答:2

我正在尝试使用此命令将字符串转换为十进制:

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;;
sql postgresql casting string-conversion
2个回答
0
投票

可以更新为minimum_ticket_price列的数据可以支持的数据类型,否则会出错。 例如,如果minimum_ticket_price列数据类型是varchar,那么您的代码必须有效。


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

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

© www.soinside.com 2019 - 2024. All rights reserved.