从VARCHAR创建DOUBLE PRECISION列,其数量为99%...(但包含一些字符串)

时间:2015-11-13 03:57:50

标签: sql postgresql

我使用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"

似乎我需要做一些事情,比如只选择数字行,但是我现在正在努力弄清楚如何做到这一点...

1 个答案:

答案 0 :(得分:1)

对于实数,您可以使用正则表达式:

update q_stock.daily
    set RET = cast(RAW_RET as double precision) 
    where RAW_RET ~ '^[-]?[0-9]+\.?[0-9]*$';