如何从字符串中提取前两位数字?

时间:2019-09-25 20:21:45

标签: regex database postgresql

下面有一个查询,该查询仅返回我字符串字段的数值,我想将其限制为两个输出字符。

查询

SELECT NULLIF(regexp_replace(temperature, '\D','','g'), '')::numeric AS "Temperature"
from tbl_temperature_hosts
where temperature like '%Core 0%' limit 1

输出

6601205698

预期结果

66

2 个答案:

答案 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