我使用Postgresql。我有一个varchar列RAW_RET,主要是数字,我试图创建一个新的RET列,它是DOUBLE PRECISION。问题是RAW_RET的几行包含文本(例如,字符'B'
而不是数字。因此,以下命令:
update q_stock.daily set RET = cast(RAW_RET as double precision) ;
返回错误invalid input syntax for type double precision: "B"
似乎我需要做一些事情,比如只选择数字行,但是我现在正在努力弄清楚如何做到这一点...
答案 0 :(得分:1)
对于实数,您可以使用正则表达式:
update q_stock.daily
set RET = cast(RAW_RET as double precision)
where RAW_RET ~ '^[-]?[0-9]+\.?[0-9]*$';