【问题标题】:Get everything after the period in PostgreSQL在 PostgreSQL 中获取期间之后的所有内容
【发布时间】:2013-09-17 13:04:11
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: sql-server postgresql substring


    【解决方案1】:
    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;
    

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

    【讨论】:

      【解决方案2】:

      另一种方法是使用string_to_array:

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

      SQLFiddle

      【讨论】:

        【解决方案3】:

        最优雅的方式是使用substring()的正则表达式:

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

        请参阅SQLFiddle 了解此查询是否有效。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-01-25
          • 2017-04-02
          • 1970-01-01
          • 2022-12-04
          • 2023-04-03
          • 2017-09-14
          • 1970-01-01
          • 2020-10-06
          相关资源
          最近更新 更多