You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL:如何将软件版本字符串转换为带前导零的整数

PostgreSQL 版本号转带前导零拼接字符串方案

核心思路是拆分版本号各段、补全前导零后再拼接,具体步骤和SQL实现如下:

  • 拆分版本号:用string_to_array(app_version, '.')将版本号按.分割成字符串数组,比如1.1.0会转为['1','1','0']。
  • 补前导零:对数组中的每个元素,用lpad(elem, 2, '0')将其补全为两位字符,不足两位的前面补0,比如'1'变'01','18'保持'18'。
  • 拼接结果:将处理后的数组元素直接拼接成完整字符串。

1. 查询转换结果的SQL

SELECT 
  app_version,
  array_to_string(
    array(SELECT lpad(unnest(string_to_array(app_version, '.')), 2, '0')),
    ''
  ) AS app_version_converted
FROM your_table_name;

或者用更简洁的string_agg写法:

SELECT 
  app_version,
  string_agg(lpad(version_part, 2, '0'), '') AS app_version_converted
FROM your_table_name,
     unnest(string_to_array(app_version, '.')) AS version_part
GROUP BY app_version;

2. 新增并填充转换列

如果需要将转换结果持久化到表中:

-- 新增列(三段版本号对应6位长度,多段可调整)
ALTER TABLE your_table_name ADD COLUMN app_version_converted VARCHAR(6);

-- 填充转换后的值
UPDATE your_table_name
SET app_version_converted = array_to_string(
    array(SELECT lpad(unnest(string_to_array(app_version, '.')), 2, '0')),
    ''
  );

注意事项

  • 如果版本号存在多段(比如1.2.3.4),上述方法依然有效,会自动将每段补两位后拼接。
  • 如果版本号包含非数字字符,需要先做格式校验或清洗,比如用regexp_match过滤出合法的数字段版本号。

内容的提问来源于stack exchange,提问作者user1923576

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:10:14