kba*_*bar 5 sql postgresql split natural-sort
我有两列,id integer和version text.我试图将字符串转换version为整数,以便我可以选择id的最大(最新)版本.
但是,id商店本身的第一个实例为version.例:
id | version
---+--------
10 | '10'
Run Code Online (Sandbox Code Playgroud)
而不是:
id | version
---+--------
10 | '10-0'
Run Code Online (Sandbox Code Playgroud)
其他行遵循约定ID:10,版本:10-1.等等.
我怎么能做到这一点?我已经尝试split_part()并施展为int.但是,split_part(version, "-", 2)将返回看起来像空字符串的内容.我尝试使用a COALESCE(splitpart..., '0')无效,因为它试图读取字段索引2返回的空字段.
使用coalesce() 和 nullif()的组合,例如:
with my_table(version) as (
values
('10'), ('10-1'), ('10-2')
)
select
version,
split_part(version, '-', 1)::int as major,
coalesce(nullif(split_part(version, '-', 2), ''), '0')::int as minor
from my_table
version | major | minor
---------+-------+-------
10 | 10 | 0
10-1 | 10 | 1
10-2 | 10 | 2
(3 rows)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
609 次 |
| 最近记录: |