Hola Lista SELECT 'abcfd 333 nnn DNI: 623663.99.99.9090 ldsklñdskñdksfmdlkffjdfd' as dato, split_part(trim(split_part('abcfd 333 nnn DNI: 623663.99.99.9090 ldsklñdskñdksfmdlkffjdfd','DNI:',2)),' ',1) as resultado
------ dato | resultado ---------------------------------------------------------------+------------------- abcfd 333 nnn DNI: 623663.99.99.9090 ldsklñdskñdksfmdlkffjdfd | 623663.99.99.9090 El 23 de marzo de 2017, 13:16, Francisco Olarte<fola...@peoplecall.com> escribió: > Gerardo: > > 2017-03-23 17:57 GMT+01:00 Gerardo Herzig <gher...@fmed.uba.ar>: > >> Buenos dias > >> Necesito extraer de un campo de texto los nros de DNI contenidos en > >> él. > >> Sé que los mismos se encuentran luego de la cadena 'DNI:' > >> > >> Con substring(texto from 'DNI:') ubico la cadena > ... > > > Que tal una expresion regular para borrar todo lo que *no* sean numeros: > > Eso te vale si solo esta el dni, pero... > > > > > select regexp_replace(texto, '[^0-9]', '','g') from tabla; > > > postgres=# select *, regexp_replace(dni, '[^0-9]', '','g') as > solo_numeros from dnis; > > dni | solo_numeros > > --------------------+-------------- > > DNI: 12.382.712 | 12382712 > > DNI:12382712 | 12382712 > > DNI:123827..12 | 12382712 > > (3 rows) > -- Que pasa si meto esto delante del select? > copy dnis(dni) from stdin; > Numero de telefono: 6666666 > DNI: desconocido, TEL: 12345678 > Tel: 66666 DNI: 12345678 Direccion: Avda. Pensilvania 1600 > 44100 = 2*2*3*3*5*5*7*7, tricky uh? > \. > -- Lo digo porque si tiene que buscar DNI: me extraña que la columna > sea simplemente "los digitos del dni con alguna cosa mas". > > Francisco Olarte: > > - > Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org > ) > Para cambiar tu suscripción: > http://www.postgresql.org/mailpref/pgsql-es-ayuda > -- Cordialmente, Ing. Hellmuth I. Vargas S.