SQL - Expresión regular

   
Vista:

Expresión regular

Publicado por jcmanzano83 jcmanzano83@hotmail.com (1 intervención) el 05/08/2011 22:50:38
Cordial saludo,

tengo una columna char con muchos registros:

NO SE ESCUCHA.
NO SE ESCUCHA. .
3.9213387
39017....
12.458079
45593.502
42132432.
14472071.
..............
42.
n.n.
.40025409
79064405.
n.n
123456789...
.45508851
........
N.T
28741263.
NOSE SABE LA N° C.C.

y la idea es sacar una columna que solo vaya dejando los números de cada registro:

(NULL)
(NULL)
39213387
39017
12458079
45593502
42132432
14472071
(NULL)
42
(NULL)
40025409
79064405
(NULL)
123456789
45508851
(NULL)
(NULL)
28741263
(NULL)

intenté hacerlo con la siguiente función:

select identificacion,regexp_replace(identificacion, '[A-Za-z]','') from tabla

pero me arroja los siguientes resultados:

O SE ESCUCHA.
O SE ESCUCHA. .
3.9213387
39017....
12.458079
45593.502
42132432.
14472071.
..............
42.
.n.
.40025409
79064405.
.n
123456789...
.45508851
........
.T
28741263.
OSE SABE LA N° C.C.

Por qué ocurre esto? Solo esta depurando el 1er dígito de los registros que empiezan por caracteres especiales. Alguna idea?

Estoy trabajando sobre PostgreSQL.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Expresión regular

Publicado por leonardo_josue (878 intervenciones) el 08/08/2011 18:59:12
Hola jcmanzano83:

No he trabajado con postgres, pero en Oracle la consulta funciona tal y como deseas (sólo habría que agregar los caracteres especiales, pues la expresión como la tienes sólo reemplaza las letras), es posible que Postgres tengas que indicar inicio y fin de la cadena, puedes intentar hacer esto:

1
regexp_replace(identificacion, '^[A-Za-z.°]$', '')



observa que estoy agregando [.°] para eliminar el punto y el signo de grados, igual y sería conveniente agregar todos los caracteres especiales que puedan venir en tu tabla.

Ojalá que el código que pueda servir o que alguien con conocimientos de Postgres te pueda ayudar.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar