SQL - Ayuda: Consulta SQL caracteres en cadenas

 
Vista:

Ayuda: Consulta SQL caracteres en cadenas

Publicado por GerarLM (1 intervención) el 30/07/2010 18:10:49
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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Ayuda: Consulta SQL caracteres en cadenas

Publicado por GerarLM (1173 intervenciones) el 30/07/2010 23:41:54
Hola GerarLM... lo que comentas dificilmente lo vas a poder lograr con una consulta, creo que en este caso te conviene más pensar en realizar un Procedimiento almacenado, donde puedas hacer uso de ciclos para analizar lo que necesitas.

Haz el intento con SP y si tienes problemas pues igual y lo vamos viendo.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar