我在build
列中有以下条目:
4.4_sometext
4.9_sometext
4.11_sometext
我试过这两种方法:
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
所以它正确地提取了数字,但是当只有1个十进制数时,在右边用零填充它,这改变了我的初始字符串。
有没有可能使它保持原来的小数位数?
更新:我在Grafana v9.4.7中使用了这个查询,并使用了一个条形图。
1条答案
按热度按时间pvcm50d11#
是的,可以修改查询,通过使用LPAD()函数在提取的数字的右侧填充零来保留原始的小数位数。
下面是如何使用regexp_replace()修改第一个查询:
下面是如何使用SUBSTRING()修改第二个查询:
在这两种情况下,我们都使用||操作符将提取的数字的原始版本(没有尾随零)与使用LPAD()函数填充零的相同数字连接起来。LPAD()的第二个参数是结果字符串的长度,我们将其设置为2以确保数字始终具有两位小数。LPAD()的第三个参数是填充字符,我们将其设置为'0'。