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

PostgreSQL提取Build版本号时如何保留原小数位数?

问题:保留Build版本号的原始小数位数

我的build列包含以下条目:

4.4_sometext
4.9_sometext
4.11_sometext

我尝试了两种SQL提取方法:
第一种:

SELECT regexp_replace(build, '_.*$', '') AS build
  FROM tableX 
 ORDER BY build

第二种:

SELECT SUBSTRING(build FOR POSITION('_' IN build) -1) AS build 
  FROM tableX 
 ORDER BY build

两种方法返回的结果却自动补了零:

4.40
4.90
4.11

提取的数字核心是对的,但单小数位的数值被右侧补零,改变了原始字符串格式。我需要保留原本的小数位数,请问该怎么做?

更新:我是在Grafana v9.4.7的柱状图中使用这些查询。


解决方案

这是因为Grafana自动把提取出的字符串识别成了数值类型,进而做了格式化补零。要保留原始字符串格式,有两种处理方向:

1. 在SQL层面强制返回字符串类型

针对不同数据库,写法略有不同:

  • PostgreSQL:用::text或者CAST强制转换
    -- 方法一:结合regexp_replace
    SELECT regexp_replace(build, '_.*$', '')::text AS build
      FROM tableX 
     ORDER BY build
    
    -- 方法二:结合SUBSTRING
    SELECT CAST(SUBSTRING(build FOR POSITION('_' IN build) -1) AS text) AS build 
      FROM tableX 
     ORDER BY build
    
  • MySQL:用CAST(... AS CHAR),也可以用SUBSTRING_INDEX简化提取逻辑
    SELECT CAST(SUBSTRING_INDEX(build, '_', 1) AS CHAR) AS build
      FROM tableX
     ORDER BY build
    

2. 在Grafana面板中调整字段显示格式

如果不想修改SQL,可以直接在Grafana里设置:

  • 打开柱状图的「字段」设置面板
  • 找到对应的build字段,将格式从「数值」切换为「字符串」
  • 保存设置后,就能看到保留原始小数位数的版本号了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:10:16