Saltar al contenido

eliminar caracteres no numéricos en una columna (carácter variable), postgresql (9.3.5)

Solución:

Usar regexp_replace es más simple:

# select regexp_replace('test1234test45abc', '[^0-9]+', '', 'g');
 regexp_replace 
----------------
 123445
(1 row)

los ^ medio not, por lo que cualquier personaje que sea no en el rango 0-9 será reemplazado por una cadena vacía, ''.

los 'g' es una bandera que significa que se reemplazarán todas las coincidencias, no solo la primera.

Para modificar cadenas en PostgreSQL, consulte la sección Funciones y operadores de cadenas de la documentación. Función substring(string from pattern) utiliza expresiones regulares POSIX para la coincidencia de patrones y funciona bien para eliminar diferentes caracteres de su cadena.
(Tenga en cuenta que el VALUES La cláusula dentro de los paréntesis es solo para proporcionar el material de ejemplo y puede reemplazarlo en cualquier momento. SELECT declaración o tabla que proporciona los datos):

SELECT substring(column1 from '(([0-9]+.*)*[0-9]+)'), column1 FROM
    (VALUES
        ('ggg'),
        ('3,0 kg'),
        ('15 kg.'),
        ('2x3,25'),
        ('96+109')
    ) strings

La expresión regular explicada en partes:

  • [0-9]+ – la cadena tiene al menos un número, ejemplo: '789'
  • [0-9]+.* – la cadena tiene al menos un número seguido de algo, ejemplo: '12smth'
  • ([0-9]+.*)* – la cadena similar a la línea anterior cero o más veces, ejemplo: '12smth22smth'
  • (([0-9]+.*)*[0-9]+) – la cadena de la línea anterior cero o más veces y al menos un número al final, ejemplo: '12smth22smth345'
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *