1

我试图删除期间之前的所有内容,换句话说,我只想显示从该期间开始的值。例如

897.78 ==> 78 
74.25 ==> 25 
3657.256 ==> 256

好吧,下面的代码只显示了期间之前的所有内容,但我想显示期间之后的所有内容

select volume, substring(volume from 1 for position('.' in volume) - 1) as column 
from MyTable    ;
4

3 回答 3

2
select volume, substring(volume from (position('.' in volume)+1) for length(volume)) as column from MyTable;

这应该可以工作(未测试,因为我没有在这台电脑上安装 postgre):)

编辑:即使只是

select volume, substring(volume from position('.' in volume)+1) as column from MyTable;

应该可以工作,因为您只能在子字符串中定义起始位置

于 2013-09-17T13:08:06.050 回答
0

另一种方法是使用string_to_array

select volume,(string_to_array(volume,'.'))[2] as column
from mytable

SQLFiddle

于 2013-09-17T17:55:02.080 回答
0

最优雅的方法是使用 regex 形式substring()

select volume, substring(volume from '[^.]*$') as column
from 

请参阅此查询的SQLFiddle工作。

于 2013-09-17T13:30:06.680 回答