我正在尝试使用此命令将字符串转换为十进制:
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;;
可以更新为minimum_ticket_price列的数据可以支持的数据类型,否则会出错。 例如,如果minimum_ticket_price列数据类型是varchar,那么您的代码必须有效。
你在做什么? 首先添加新列,十进制(但我建议使用基本数据类型,例如实数或双精度,是最有效的)
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是字符串,你不能设置一个数字......如果是一个数字没有意义将其设置为字符串