la funcion regexp_split_to_table y regexp_split_to_array Dividide una cadena usando expresiones regulares POSIX como el delimitador.
El sigueinte ejemplo divide una cadena de texto utilizando como delimitador 'espacio' para separar las palabras y devolver un arreglo de postgres.
select regexp_split_to_array('hola mundo! que tal!',E'\\s+') as xy el resultado {hola,mundo!,que,tal!}El sigueinte ejemplo divide una cadena de texto utilizando como delimitador 'espacio' para separar las palabras y devolver un recorset que contiene una fila para cada palabra
select regexp_split_to_table('hola mundo como estas',E'\\s+') as xy el resultado es:"hola" "mundo" "como" "estas"
puedes cambiar la expresion regular E'\\s+' (que por lo q entiendo son espacios en blanco) por estas otras '[^0-9]+' '[^A-Z]+' '[^A-Z]*' '[^a-z]*' o cualquier otra que utilices, pruebalo y observa los resultados.
Utilidad: imagina que quieres crear usuarios con el primer caracter del nombre y el apellido concatenado a partir de tu tabla de personal de tu sistema administrativo entonces usas esto:
select cedula,nombre,apellido,substring(nombre from 1 for 1) ||
(select regexp_split_to_table(apellido,E'\\s+') as x limit 1) as login,
md5('123456'),1 as status from personal where status = 1 order by cedulaLuego toca verificar la unicidad de los login's de la tabla... y listo... 
 
Que buena función, Roiman....
ResponderEliminarLa uso en una función para extraer palabras y luego buscar registros que las contengan.
Gracias.
Este comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminar