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

Ayuda: Consulta SQL sobre cadena

Estas en el tema de Ayuda: Consulta SQL sobre cadena en el foro de SQL Server en Foros del Web. Hola, llevo un buen rato dandole vueltas a una consulta que quiero realizar y no doy encontrado una manera general de hacerla. La idea es, ...
  #1 (permalink)  
Antiguo 30/07/2010, 09:18
 
Fecha de Ingreso: julio-2010
Mensajes: 6
Antigüedad: 13 años, 9 meses
Puntos: 0
Ayuda: Consulta SQL sobre cadena

Hola, llevo un buen rato dandole vueltas a una consulta que quiero realizar y no doy encontrado una manera general de hacerla.
La idea es, teniendo una tabla con nombres, realizar una consulta que me devuelva aquellos nombres pertenecientes a la tabla que contengan un numero determinado o mas de caracteres diferentes provenientes de un nombre que yo elija.
Por ejemplo, supongamos que mi tabla es tal que asi:

Nombre
-----------
Pepe
Juan
Alfredo
Lola
Paco
Ramon
Ulises
Pedro
Paloma
Alfonso
...


Yo ahora recibo un nombre, por ejemplo "Dionisio".
La consulta que quiero realizar es: Devuelveme los nombres que contengan cualquiera de los caracteres que forman la palabra "Dionisio" en cualquier posicion PERO, por ejemplo, esta vez diremos que ese numero de caracteres coincidentes en existencia (no en posicion) ha de ser igual o superior a 3.

Por un lado tenemos el conjunto de caracteres diferentes que forman mi nombre inicial = [d, i, o, n, s] y por otro mi tabla con nombres.
Mi consulta deberia devolver aquellos nombres pertenecientes a la tabla Nombres que contuvieran 3 o mas caracteres DIFERENTES (no vale que tengan 3 veces un caracter perteneciente al conjunto de comparacion) en cualquier orden.

Para este ejemplo en concreto devolveria:
"Alfonso" ; ya que contiene o, n y s = 3


La idea es poder crear una consulta generia, hablando "mal" seria algo asi:
Select Nombre FROM tabla Where Nombre IN [d, i, o, n, s] 3 o mas veces

He intentado realizar la consulta jugando con los comodines "%" pero eso implica realizar uan consulta diferente para cada nombre que quiera comparar ademas de tener que hacer todas las posibles combinaciones de caracteres a encontrar, por ejemplo:
Select Nombre FROM tabla Where (Nombre LIKE "%d%" AND Nombre LIKE "%i%" AND Nombre LIKE "%o%") OR (Nombre LIKE "%d%" AND Nombre LIKE "%i%" AND Nombre LIKE "%n%) OR etc etc


Yo necesito una consulta que selecione un nombre que contenga X o mas caracteres pertenecientes a otro nombre.
¿A alguien se le ocurre una forma generica de realizar esta consulta? Seria perfecto que se utilizara el nombre inicial con el que comparamos y un parametro "coincidencias" que marcara el numero minimo de caracteres pertenecientes al nombre inicial deben tener los nombres que devuelva la consulta.

Muchas gracias por la ayuda.
  #2 (permalink)  
Antiguo 03/08/2010, 10:18
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Ayuda: Consulta SQL sobre cadena

asi rapido se me ocurre... que hagas una funcion que el nombre ingresado... te devuelva como tabla... una funcion que le envie el NOMBRE y te devuelva una tabla de tamaño del Nombre...

Function RetornarEnTabla(NOMBRE)
Recorrer NOMBRE
Agregar a la Tabla la letra Correspondiente (para 1ra iteracion = N, pra la 2da = O...)
RETURN TABLA
End Function

luego ya tienes el NOMBRE separado por registros... yo creo que con eso avanzas mas... paso a paso amigo
__________________
Odio verte ir, pero me encanta verte yendo :)

Etiquetas: sql, cadenas
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 10:39.