![]() |
Separar Palabras en cadenas de texto sql server Hola, soy nueva en esto del sql... tengo un conflicto para separar el nombre de los apellidos, en una tabla tengo un campo que trae el nombre con los apellidos juntos y debo de tomar la primer palabra para nombre, la segunda para Apellido Paterno y la tercera para Apellido Materno, esto sin importar si en verdad cada palabra corresponde a ese orden, primero lo resuelvo de esta forma: -Primero separo el nombre de los apellidos: Update Tabla set NombreCotitular = LEFT(nombre, ISNULL(NULLIF(CHARINDEX(' ', nombre) - 1, -1), LEN(nombre))) Update Tabla set Apellidos = SUBSTRING(nombre, CHARINDEX(' ', nombre) + 1, LEN(nombre)) -Despues separo los apellidos Update tabla set ApellidoPatCotitular = LEFT(Apellidos, ISNULL(NULLIF(CHARINDEX(' ', Apellidos) - 1, -1), LEN(Apellidos))) Update tabla set ApellidoMatCotitular=SUBSTRING(Apellidos, CHARINDEX(' ', Apellidos) + 1, LEN(Apellidos)) Lo hace bien cuando se tienen solo 3 cadenas, como por ejemplo Nombre ApellidoPat ApellidoMat Juan Perez Perez Pero cuando se tienen más de tres cadenas no se como solo indicarle que para el apellido materno solo tome la segunda palabra de los apellidos hasta el espacio. ¿Me pueden ayudar a agregarle a este update que solo me tome hasta donde se termina la segunda palabra? Update tabla set ApellidoMatCotitular=SUBSTRING(Apellidos, CHARINDEX(' ', Apellidos) + 1, LEN(Apellidos)) Muchas gracias!!! |
Respuesta: Separar Palabras en cadenas de texto sql server Esto se ha platicado en este foro y es CASI IMPOSIBLE de resolver, ante la gran diversidad de nombres de personas, ¿ejemplo? Juan Luis Armando de Los Santos y Cobos Maria Guadalupe Reyna Gonzalez Chavez Felipe de Jesus de todos los santos Calderon Hinojosa (jajaja) etc. |
Respuesta: Separar Palabras en cadenas de texto sql server Jaja.. muy buenos tus ejemplos... Si, sé que es imposible descifrar esto.. pero lo que necesito es solo de una cadena tomar solo las tres primeras palabras ( no importa si corresponden a nombre y apellidos o no) La primer parte del nombre y apellidos ya lo tengo... pero si quiero solo tomar la segunda palabra de los apellidos no se como hacerlo... Solo tengo este update... pero me trae todo el resto de la cadena a partir de la segunda palabra: Update tabla set ApellidoMatCotitular=SUBSTRING(Apellidos, CHARINDEX(' ', Apellidos) + 1, LEN(Apellidos)) Pero solo quiero q me tome la segunda palabra hasta el espacio, sabes si hay alguna forma de obtenerlo?? Mil gracias por tu apoyo y tiempo!!! |
Respuesta: Separar Palabras en cadenas de texto sql server Debes "jugar" en "quitar" de tu cadena principal, lo que deseas, te pongo un ejmplo "Juan Carlos Roman Sanchez" Primero "saco" a "JUAN" SELECT SUBSTRING(CADENA, 1, CHARINDEX(' ', CADENA) - 1) -- = Juan Ahora, resto esto que acabo de quitar SET CADENA = SUBSTRING(CADENA, CHARINDEX(' ', CADENA) +1) , LEN(CADENA)) Asi, hasta que concluyas con "sacar" lo que deseas de tu cadena. |
Respuesta: Separar Palabras en cadenas de texto sql server Tienes razón!! es muy facil! muchas gracias por tu ayuda!!! |
Respuesta: Separar Palabras en cadenas de texto sql server A veces la solución mas sencilla es l mas funcional...Lo unico q tienes q hacer es guardar el archivo que tienes en excel con formato texto unicode. Lo abres desde Excel yelijes la opcion delimitados y le das siguiente, eliejes la opcion espacio y tabulador, le das siguiente y le das texto y finalizar Y listo, espero que te haya servido |
Respuesta: Separar Palabras en cadenas de texto sql server Caballero para poder separar una cadena que tiene todo el nombre primer apellido segundo apellido primer nombre segundo nombre select Name ,LEFT((SUBSTRING((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))), CHARINDEX(' ', (SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))) + 1, LEN((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))))), ISNULL(NULLIF(CHARINDEX(' ', (SUBSTRING((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))), CHARINDEX(' ', (SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))) + 1, LEN((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))))))) - 1, -1), LEN((SUBSTRING((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))), CHARINDEX(' ', (SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))) + 1, LEN((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))))))))) ,LEFT((SUBSTRING((SUBSTRING((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))), CHARINDEX(' ', (SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))) + 1, LEN((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))))), CHARINDEX(' ', (SUBSTRING((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))), CHARINDEX(' ', (SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))) + 1, LEN((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))))))) + 1, LEN((SUBSTRING((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))), CHARINDEX(' ', (SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))) + 1, LEN((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))))))))), ISNULL(NULLIF(CHARINDEX(' ', (SUBSTRING((SUBSTRING((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))), CHARINDEX(' ', (SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))) + 1, LEN((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))))), CHARINDEX(' ', (SUBSTRING((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))), CHARINDEX(' ', (SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))) + 1, LEN((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))))))) + 1, LEN((SUBSTRING((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))), CHARINDEX(' ', (SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))) + 1, LEN((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))))))))) - 1, -1), LEN((SUBSTRING((SUBSTRING((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))), CHARINDEX(' ', (SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))) + 1, LEN((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))))), CHARINDEX(' ', (SUBSTRING((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))), CHARINDEX(' ', (SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))) + 1, LEN((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))))))) + 1, LEN((SUBSTRING((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))), CHARINDEX(' ', (SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))) + 1, LEN((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))))))))))) ,LEFT(Name, ISNULL(NULLIF(CHARINDEX(' ', Name) - 1, -1), LEN(Name))) ,LEFT((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name))), ISNULL(NULLIF(CHARINDEX(' ', (SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))) - 1, -1), LEN((SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)))))) from CCCCCC |
Respuesta: Separar Palabras en cadenas de texto sql server Favor de NO REVIVIR temas ya antiguos, ademas de que tu propuesta es simplemente con REGLAS de como debe venir el nombre y en esto estriba la problemática, que no las hay.... |
La zona horaria es GMT -6. Ahora son las 05:02. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2025, Jelsoft Enterprises Ltd.