gpt4 book ai didi

sql - 无法将 postgresql 表列从类型 varchar 转换为 int

转载 作者:行者123 更新时间:2023-11-29 12:31:05 26 4
gpt4 key购买 nike

我有一个数据库表,用于存储从网络蜘蛛返回的数据。我有一列包含不同事件的门票价格,所有事件都采用 varchar 类型(因为 scrapy 蜘蛛必须以 unicode 格式抓取数据)。我正在尝试返回该列的最低价格,并且由于 min() 函数仅适用于 INT 类型的数据,因此我尝试使用来自 this SO post 的解决方案将该列转换为整数。 :

ALTER TABLE vs_tickets ALTER COLUMN ticketprice TYPE integer USING (ticketprice::integer);

但我收到错误:错误:整数的输入语法无效:

我也尝试过:change_column :vs_tickets, :ticketprice, 'integer USING CAST(ticketprice AS integer)' 但这也不起作用。

将列转换为 INT 类型的正确方法是什么?

编辑:

enter image description here

最佳答案

字符串中有小数位,所以简单的转换是行不通的。您可以进行双重转换:

cast(cast(ticketprice as decimal(10, 2)) as int)

或:

(ticketprice::decimal(10, 2))::int

(括号不是绝对必要的。)

编辑:

或者,正如 Erwin 指出的那样,只需使用 numeric:

(ticketprice::numeric)::int

Postgres 在 numeric 方面比大多数其他数据库更聪明。 . .毕竟,它支持非常大的数字;)

最终的查询是:

ALTER TABLE vs_tickets
ALTER COLUMN ticketprice TYPE integer USING (ticketprice::numeric::integer);

关于sql - 无法将 postgresql 表列从类型 varchar 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32280384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com