回答

收藏

使用split_part后将值替换为空字段

技术问答 技术问答 269 人阅读 | 0 人回复 | 2023-09-12

我有两列,id integer和version text。我试图转换字符串version为了选择整数ID最大(最新)版本。
. t! [3 m1 @! D8 V! x但是,id存储的第一个例子是自己存储version。例子:8 R0 z" }* j+ h/ ]  D+ W
id | version--- --------10 | '10'相对于:- Z: y( H/ @% ~" A
id | version--- --------10 | '10-0'其他行遵循惯例ID:10,版本:10-1。等等。
9 d; M7 d/ o' p, n我该怎么办?我试过了split_part()并投射int。但是,split_part(version,"-",2)回到看起来像空字符串的东西。我试着用它a却COALESCE(splitpart...,0)无济于事,因为它试图读取字段索引2返回的空字段。
1 m( V7 u3 \& L9 H, f7 S' W3 T! z                                                                : _% A, Y8 X4 P
    解决方案:                                                               
4 _! R1 s; n4 U( ]# P  J  L                                                                使用coalesce()和nullif()组合,如:' R+ ^. y% u4 s" ^$ c7 Q4 w
with my_table(version) as (values   -1'),('10-2'))select     version,    split_part(version,'-',1)::int as major,    coalesce(nullif(split_part(version,'-,,int as minorfrom my_table version | major | minor --------- ------- -------     |    10 |   0 10-1    |    10 |    1 10-2    |    10 |    2(3 rows)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则