PDA

Ver la Versión Completa : Descomponer nombre y apellidos


lgarcia
15-04-2009, 16:04:28
Hola amigos del Club:

Tengo el siguiente problema, cuando diseñamos una BD relativa al personal, creamos un campo llamado nombre donde se registra el nombre completo del empleado incluyendo sus apellidos, cosas naturales de los nombres hispanicos donde hay mas de un nombre y 2 apellidos y donde se usan tanto para el nombre o los apellidos algunos articulos (ej de la Rosa), tengo necesidad de descomponer esto en nombre1, nombre2, apellido1 y apellido2 y no tengo idea de como entrarle a eso, porque la cadena puede tener desde 3 palabras a n dependiendo de los espacios vacios que estan entre las palabras que componen el nombre. Alguna recomendacion para este caso.

Saludos

Luis Garcia

dec
15-04-2009, 16:12:43
Hola,

El caos no se puede ordenar: si no ya no sería caos. Así pues, si existe algún tipo de orden, por ejemplo, si sabemos que tendremos siempre como separador un espacio en blanco, podremos hacer algo. Si no es así, o si no sabemos bien qué separan los espacios, o detrás o delante de qué espacio habrá un nombre o tal vez un apellido... ¿cómo podría hacerse? Tal vez por aproximación, esto es, arriesgándonos a no conseguir siempre el el resultado correcto. Igual es menester partir de otra base... que la estructura de la base de datos contemplara un campo "nombre", otro "apellidos"...

lgarcia
15-04-2009, 21:17:49
Al principio fui un poco apocaliptico con la consulta, ahora voy a ser mas practico, vamos a imaginarnos que el campo nombre solo tenga 3 palabras y lo tenga que descomponer en nombre, apellido1 y apellido2, que funcion de SQL me permite buscar el espacio en blanco para con SUBSTRING poder resolver el problema o alguna otra variante. Olvidaba estoy trabajando con SQL Server 2000.

Muchas gracias por la respuesta DEC

Saludos

Luis Garcia

marcoszorrilla
15-04-2009, 21:28:18
Lo más práctico sería crear un pequeño programa que asuma que la primera palabra es el nombre y el resto los apellidos, mediante un bucle recorre la tabla y reparte el actual campo en los dos creados a propósito, luego no quedará más remedio que recorrer los registros, una simple rejilla y una Barra de navegación y comprobar los registros a mano puesto que se habrá colado algún Miguel Angel, Ana María, Jose Antonio etc.

Estos casos habrá que cortar y pegar.

Un Saludo.

javier7ar
15-04-2009, 22:16:37
con Substring y CharIndex podes descomponer en palabras. Fijate en la ayuda de Transact-SQL para saber como usarlas. Acordate que en SQL Server 2000 podes declarar funciones definidas por el usuario y ahi podes usar variables para hacerte las cosas un poco mas faciles.

Una vez que separaste las palabras podrias ahorrar un poco del trabajo manual si para la carga de los datos tomaron algun estilo para completar los datos, por ejemplo si SIEMPRE cargaron primero los nombres y luego los apellidos, vas a tener que la primer palabra va a ser siempre un nombre, entonces metes en una tabla temporal todas las primeras palabras y vas a tener una tabla con muchos nombres. Luego evaluas si la segunda palabra esta en esa tabla quiere decir que es un nombre (vas a tener algunos problemas con palabras que pueden ser apellidos y nombres, como por ejemplo Rosa y de la Rosa, pero bue' te vas a ahorrar bastante creo)
Espero que se entienda
Saludos