只用数字修整十进制值

时间:2019-03-14 13:04:02

标签: postgresql

在我的表中,V1.51.6V1.6.7的字段很少。我想删除所有字符,只在表中保留数字。

  • V1.5应该更改为1.5
  • V1.6.7应该更改为1.6.7
  • 1.6应该保持不变。

1 个答案:

答案 0 :(得分:0)

要删除所有不是数字或点的内容,可以使用constructor( public router: Router, public activatedRoute: ActivatedRoute, public titleService: Title ) { router.events .filter(e => e instanceof NavigationEnd) .subscribe((event) => { console.log('title from route data :', activatedRoute.root.firstChild.snapshot.data['title']); this.title = activatedRoute.root.firstChild.snapshot.data['title']; this.titleService.setTitle(this.title); }) }

regexp_replace()

例如

regexp_replace(the_column, '[^0-9.]', '', 'g')

返回:

with data (version) as (
  values 
    ('V1.5'),
    ('V1.6.7'),
    ('1.2.3'),
    ('3.4.5-alpha')
)
select version, regexp_replace(version, '[^0-9.]', '', 'g') as clean_version
from data;

要更改表中的数据,请使用UPDATE语句:

version     | clean_version
------------+--------------
V1.5        | 1.5          
V1.6.7      | 1.6.7        
1.2.3       | 1.2.3        
3.4.5-alpha | 3.4.5        

update the_table set the_column = regexp_replace(the_column, '[^0-9.]', '', 'g') where the_column <> regexp_replace(the_column, '[^0-9.]', '', 'g'); 子句可阻止不会更改任何内容的更新。

当然,您需要将where替换为要更改的真实列名。