SQL - Ayuda con una consulta

   
Vista:

Ayuda con una consulta

Publicado por Juana (5 intervenciones) el 25/09/2008 21:21:34
Hola! necesito realizar la siguiente consulta, por ejemplo la condicion es que ingreso un numero ej 5126 y la consulta me tiene que devolver 5126, 5261, 6251, 2156 etc. Si me pueden ayudar...
Gracias!
Saludos
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

RE:Ayuda con una consulta

Publicado por Efren (21 intervenciones) el 25/09/2008 21:47:14
* que motor de Base de datos usas?
* me imagino que son las posibles combinaciones lo que buscas encontrar un un numero dado?
* Si dieras mas detalles de tu pregunta seria mas facil ayudarte..

buen dia
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

RE:Ayuda con una consulta

Publicado por Juana (5 intervenciones) el 25/09/2008 21:58:17
Exactamente, tengo almacenado todos numeros de cuatro cifras y yo ingreso un numero ej 4587 y necesito que me devuelva la consulta todas las posibles combinaciones de ese numero.
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

RE:Ayuda con una consulta

Publicado por Efren (21 intervenciones) el 25/09/2008 22:30:10
Dos preguntas mas,
* Es SQL Server 2000 o 2005 tu motor de BD?
* Ese numero siempre es de 4 digitos o varia?

estoy buscando solucion a tu problema..
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

RE:Ayuda con una consulta

Publicado por Juana (5 intervenciones) el 25/09/2008 22:58:36
ok! gracias, es SQL Server 2000, y el numero siempre es de 4 digitos
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

Posible Respuesta...

Publicado por Leopoldo Taylhardat (89 intervenciones) el 26/09/2008 15:37:26
Saludos...

NUNCA he probado este encadenamiento...like '%'+texto+'%' pero INTÉNTALO...

Supongamos que el campo se llama 'codigo' y que le pasas el parámetro a la consulta 'valor'...
este 'valor' si se lo pasas como texto (es más facil) ya que deberías
descomponerlo en caracteres...
De acuerdo al dialecto de la base de datos varía la función pero en SQLServer (al igual que Sybase) es CAST... entonces tendrías.

entonces tu 'where' quedaría así....

where (left(cast(codigo as char(4)),1) like '%'+left(valor,1)+'%' AND
mid(cast(codigo as char(4)),2,1) like '%'+mid(valor,2,1)+'%' AND
mid(cast(codigo as char(4)),3,1) like '%'+mid(valor,3,1)+'%' AND
RIGHT(cast(codigo as char(4)),1) like '%'+RIGHT(valor,1)+'%')
...

Espero que te sirva..,
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

Sí funciona!

Publicado por Leopoldo Taylhardat (89 intervenciones) el 26/09/2008 15:51:14
Hice esta consulta...

SELECT DBA.CLIENTES.NOMBRE_CLIENTE
FROM DBA.CLIENTES
WHERE DBA.CLIENTES.NOMBRE_CLIENTE like '%'+'LEO'+'%'

y me dió estos resultados...

LEONARDO GIMENEZ
ELEOSMARY PEREZ
...
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

RE:Sí funciona!

Publicado por Juana (5 intervenciones) el 26/09/2008 17:19:49
Lo voy a probar. Gracias!

Saludos
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

RE:No funciona

Publicado por Tao (1 intervención) el 26/09/2008 18:17:31
No funciona...
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

RE:Posible Respuesta...

Publicado por pacopaz (143 intervenciones) el 26/09/2008 17:01:19
La opción de Leopoldo devolvería sólo el mismo número que estás introduciendo y, esto, sólo si existe. En realidad lo que esperas es que cualquiera de los 4 dígitos esté contenido, por lo que la solución debería ser algo como esto:
Utilizando los mismos supuestos de Leopoldo,

where CharIndex(left(valor, 1), cast(codigo as char(4)) > 0
and CharIndex(substring(valor, 2, 1), cast(codigo as char(4)) > 0
and CharIndex(substring(valor, 3, 1), cast(codigo as char(4)) > 0
and CharIndex(right(valor, 1), cast(codigo as char(4)) > 0

donde:
CharIndex es la función que devuelve la primera ocurrencia de una cadena dentro de otra. Para más información, refiérete a esta página:
http://msdn.microsoft.com/en-us/library/aa258228(SQL.80).aspx

Por cierto, otro comentario. La función 'mid' no existe para SQL Server 2000.

Espero que te sirva.

Saludos.
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

RE:Posible Respuesta...

Publicado por Juana (5 intervenciones) el 26/09/2008 17:21:10
Muchas gracias por tu respuesta, lo voy a probar.

Saludos
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

Nota...

Publicado por Leopoldo Taylhardat (89 intervenciones) el 27/09/2008 17:54:17
Saludos...
Cuando me refería al SI FUNCIONA... me refería al like encadenado...
'%'+left(valor,1)+'%'
...
tienen razon... no analicé bien lo de la búsqueda en cualquier posición...
...
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

RE:Nota...

Publicado por DiK (1 intervención) el 28/09/2008 01:31:59
Yo he llegado descomponer la cadena en sus 24 combinaciones posibles y almacenarla en una matriz. (con una funcion)
Solo falta el guapo que la ponga dentro de una consulta. Yo he probado pero de momento no logro que funcione.
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