下面有一个查询,该查询仅返回我字符串字段的数值,我想将其限制为两个输出字符。
查询
SELECT NULLIF(regexp_replace(temperature, '\D','','g'), '')::numeric AS "Temperature"
from tbl_temperature_hosts
where temperature like '%Core 0%' limit 1
输出
6601205698
预期结果
66
答案 0 :(得分:2)
SELECT substring(NULLIF(regexp_replace(temperature, '\D','','g'), '')::numeric::text from 1 for 2)::numeric AS "Temperature"
from tbl_temperature_hosts
where temperature like '%Core 0%' limit 1
答案 1 :(得分:2)
对back references使用单个正则表达式:
NULLIF(regexp_replace(temperature, '^\D*(\d?)\D*(\d?).*$', '\1\2'), '')
^
和$
在此处是可选的,但通常使其速度更快。
或将表达式包装在left()
中-比substring()
短且快:
left(NULLIF(regexp_replace(temperature, '\D','','g'), ''), 2)
db <>提琴here