Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Borrar palabra de registros de tabla con consulta sql

Estas en el tema de Borrar palabra de registros de tabla con consulta sql en el foro de SQL Server en Foros del Web. Hola Tengo una duda, lo que me pasa es que tengo una tabla con mas de 40,000 registros en la cual se pretende separar un ...
  #1 (permalink)  
Antiguo 06/09/2010, 09:43
 
Fecha de Ingreso: noviembre-2009
Mensajes: 110
Antigüedad: 14 años, 5 meses
Puntos: 1
Borrar palabra de registros de tabla con consulta sql

Hola Tengo una duda, lo que me pasa es que tengo una tabla con mas de 40,000 registros en la cual se pretende separar un campo llamado nombre en dos(nombre y apellidos), lo cual lo tengo que hacer manualmente... lo que estoy haciendo es ir separando por fragmentos con algo asi..

ej:

UPDATE PERSONA SET APELLIDOS='CHAIRES ' WHERE NOMBRES LIKE 'CHAIRES%'

Con esto pongo en el campo APELLIDOS la palabra 'CHAIRES ' en los registros donde el NOMBRE comience con 'CHAIRES' y ya solo pego el segundo apellido, pero aun asi tengo que ir quitando de uno por uno la palabra CHAIRES del campo NOMBRE...

Ya busque para hacer otra consulta para quitar la primer palabra de NOMBRE sola pero no encuentro nada... solo encontre el REPLACE pero no me funciona en el flamerobin(DBMS).. y tambien encontre algo de CHARINDEX pero no me funciona aqui tampoco...

Saludos espero me puedan ayudar porque son muchisimos registros... los quiero
  #2 (permalink)  
Antiguo 06/09/2010, 11:42
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Respuesta: Borrar palabra de registros de tabla con consulta sql

Parece no haber en sql una función que te ayude a hacer lo que quieres, pero puedes crearla.
La complejidad va a depender de los datos. Si siempre tienes 2 apellidos y 2 nombres, además estos no son compuestos, es decir del tipo: DE LA CUADRA - RIOSECO - FRANCISCO - JAVIER, podrías hacer que la función busque la posición del segundo carácter espacio de la cadena, luego cortar lo que está antes con substring() y eso usarlo para asignarlo a apellidos, el resto sería el nombre.

Para buscar tienes la función CHARINDEX.

Y el sql final usando la función sería algo asi:

UPDATE PERSONA SET APELLIDOS=funcionExtraerApellido(NOMBRES )
  #3 (permalink)  
Antiguo 06/09/2010, 14:52
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Borrar palabra de registros de tabla con consulta sql

Buenas tardes jisravila, en tu post mencionas flamerobin así es que puedo suponer que estas trabajando con Firebird, te recuerdo que este foro es sobre SQL Server, aunque lamentablemente no existe en este sitio un foro dedicado a Firebird.

Como menciona muy acertadamente ClaudioVega la complejidad de tu problema radica en determinar qué criterio vas a asignar para dividir el nombre y los apellidos. ya que además de los apellidos compuestos también hay personas que tienen más de dos nombres y como ejemplo dos personajes muy famosos:

Miguel Gregorio Antonio Ignacio Hidalgo y Costilla Gallaga Mandarte Villaseñor
(Padre de la Patria, México)

Juan Carlos Alfonso Víctor María de Borbón y Borbón-Dos Sicilias
(Rey Juan Carlos I de España)

En tu post mencionas que no puedes ejecutar las instrucciones REPLACE y CHARINDEX en flamerobin, en el caso de la función REPLACE funciona exactamente Igual en SQL Server y en Firebird, pero en el caso de la función CHARINDEX esta tiene su equivalente en la función POSITION.

Saludos
Leo.

Etiquetas: borrar, palabra, registros, sql, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:31.