在PostgreSql中将列值从varchar转换为整数



我想返回sv列(一个varchar)大于40的所有行。如何将sv动态转换为整数?下面这行返回ERROR:整数输入语法无效:"SV">

SELECT namefirst, namelast, yearid FROM pitching JOIN people ON pitching.playerID = people.playerID WHERE CAST(sv AS INTEGER)>40;

Postgres没有内置的方法来避免转换错误。一种方法是使用case表达式:

WHERE (CASE WHEN sv ~ '^[0-9]+$' THEN sv::integer END) > 40

或者,如果整数在左边填充为0,则可以使用字符串比较:

WHERE sv >= '40'

但是,这有匹配非数值值的风险(您似乎已经给出了您正在获得的错误)。

相关内容

  • 没有找到相关文章

最新更新