Как извлечь первые две цифры из строки? - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть запрос ниже, который возвращает мне только числовые значения моего строкового поля, я хотел ограничить его двумя выходными символами.

QUERY

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

ВЫХОД

6601205698

ОЖИДАЕМЫЙ РЕЗУЛЬТАТ

66

Ответы [ 2 ]

2 голосов
/ 26 сентября 2019

Используйте одно регулярное выражение с обратными ссылками :

NULLIF(regexp_replace(temperature, '^\D*(\d?)\D*(\d?).*$', '\1\2'), '')

^ и $ здесь необязательно, но обычно делают это быстрее.

Или оберните свое выражение в left() - короче и быстрее, чем substring():

left(NULLIF(regexp_replace(temperature, '\D','','g'), ''), 2)

db <> скрипка здесь

2 голосов
/ 25 сентября 2019
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...