Tengo la cuerda: tengo 10 años con 500 amigos. Quiero devolver 10 y 500 pero cuando ejecuté la consulta a continuación y volvió vacío:
SELECT REGEXP_MATCHES('I have the string: I am 10 years old with 500 friends', '-?\\d+','g');El problema es con el doble anti-slash. Si bien algunas bases de datos requieren que se escapen las clases de caracteres regex, Postgres espera solo una barra diagonal.
Asi que:
select regexp_matches( 'I have the string: I am 10 years old with 500 friends', '-?\d+', 'g' ); '-?' no es sensato para su cadena de ejemplo. Lo dejé como está en caso de que quieras acomodarte a posibles números negativos.
Reemplace \\d con [0-9] :
SELECT REGEXP_MATCHES( 'I have the string: I am 10 years old with 500 friends', '(-?[0-9]+)','g' )Producción:
10 500Ver demostración en vivo .