Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-04-2010
voci voci is offline
Miembro
 
Registrado: oct 2003
Posts: 97
Poder: 21
voci Va por buen camino
¿Se pueden comparar máscaras guardadas en una base de datos?

Con la palabra clave "Like" se pueden crear patrones de búsqueda:

SELECT * FROM base de datos
WHERE nombre LIKE 'ANT%'

Pero ¿y lo contrario?, es decir guardar en la base de datos patrones y acceder a ellos con alguna claúsula.

Supongamos que tenemos este patrón en la base de datos 'ANT', queremos buscar ese registro desde 'ANTIGUO' ó desde 'ANTONIO', ¿es factible?.

Saludos.
Responder Con Cita
  #2  
Antiguo 06-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Disculpa pero no acabo de entenderte, podrias ser un poco más detallista?, mejor si pones algun ejemplo para una mejor comprensión..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #3  
Antiguo 07-04-2010
voci voci is offline
Miembro
 
Registrado: oct 2003
Posts: 97
Poder: 21
voci Va por buen camino
A la aplicación, en uno de los apartados, se le introducen datos de artículos del tipo 'DGH25G486', 'CF54F2789', '2DGH5G486', etc. Observa que el tercer código es una reposición del mismo artículo que el primero, asi es como distinguen las reposiciones.

El caso es que quieren, por ejemplo ,a todos los artículos que incluyan "DGH" hacerles un descuento del 2%, a los que incluyan "CF" otro del 4%, etc.

De ahí la pregunta de si se puede, partiendo del artículo, comparar dicho artículo con la pertinente máscara creada en la base de datos, en esta base irá además el descuento pertinente.

Gracias por tú interes, espero haberme explicado correctamente.
Responder Con Cita
  #4  
Antiguo 07-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Si te estoy entendiendo bien , tu consulta SQL tendría que ser muy parecida o similar a ésta:
Código SQL [-]
SELECT * FROM MiTabla t1,Patrones p 
WHERE t1.nombre LIKE Concat('%',p.Patron,'%')

Patron es el campo de Patrones que tienes almacenado en tu tabla de Patrones..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 07-04-2010 a las 21:45:08.
Responder Con Cita
  #5  
Antiguo 08-04-2010
voci voci is offline
Miembro
 
Registrado: oct 2003
Posts: 97
Poder: 21
voci Va por buen camino
No me encuentra ningún registro, tampoco me permite la construcción exactamente igual que la escribes tú, de todas formas esta es la que he creado yo como prueba:

SELECT * FROM Patrones p WHERE 'DGH25G486' LIKE ('%p.Patron%')

y así tampoco me devuelve ningún resultado:

SELECT * FROM Patrones p WHERE 'DGH25G486' LIKE ('%,p.Patron,%')

por supuesto tengo una tabla con un campo Patron igual a 'DGH'

Saludos.

Última edición por voci fecha: 08-04-2010 a las 13:44:19.
Responder Con Cita
  #6  
Antiguo 08-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Question

Cita:
Empezado por voci Ver Mensaje
No me encuentra ningún registro, tampoco me permite la construcción exactamente igual que la escribes tú, de todas formas esta es la que he creado yo como prueba:

SELECT * FROM Patrones p WHERE 'DGH25G486' LIKE ('%p.Patron%')

y así tampoco me devuelve ningún resultado:

SELECT * FROM Patrones p WHERE 'DGH25G486' LIKE ('%,p.Patron,%')

por supuesto tengo una tabla con un campo Patron igual a 'DGH'

Saludos.
Bueno el anterior ejemplo estaba hecho para MySQL, entonces sería muy importantes que menciones que Servidor de base de dato estas usando?..¿MySQL,MS SQL Server,Oracle,Firebird,PostGreSQL,etc? ¿cuál?.
Si te das cuenta en el ejemplo anterior estoy usando la funcion "Concat" para concatenar el simbolo "%" con el patron almacenado en la Base de dato..
Saludos....
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #7  
Antiguo 10-04-2010
voci voci is offline
Miembro
 
Registrado: oct 2003
Posts: 97
Poder: 21
voci Va por buen camino
Perdona que no te haya contestado antes, ayer me fué imposible entrar en la página.

Cita:
Empezado por rgstuamigo
entonces sería muy importantes que menciones que Servidor de base de dato estas usando
Tienes razón, debí haber empezado comentando el servidor de base de datos, el programa está desarrollado en delphi, el servidor es Borland Database Engine.

Saludos.
Responder Con Cita
  #8  
Antiguo 10-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow Aclarando un poco

Cita:
Empezado por voci Ver Mensaje
Perdona que no te haya contestado antes, ayer me fué imposible entrar en la página.



Tienes razón, debí haber empezado comentando el servidor de base de datos, el programa está desarrollado en delphi, el servidor es Borland Database Engine.

Saludos.
Borland Database Engine conocido por BDE no es un servidor de base de dato, es solamente un motor de conexion que gestiona la conexion desde y hacia el servidor de Base de datos y el host cliente.. En otras palabra es un intermediario entre la aplicacion y el servidor de Base de dato que gestiona la conexion.
Hoy por hoy el BDE ya está obsoleto,antiguamente se lo utilizaba, ya que no se le está dando soporte, claro está que siempre existen programadores que aún lo utilizan a pesar que existen muchos componentes nuevos que fascilitan la conexion sin usar el BDE.

En cuanto al servidor de base de dato que estás utilizado, lo que te estoy pidiendo es especificar con que Sistema de gestión de Base de datos estás trabajando? , e incluso en mi anterior post te he mencionado algunos Servidores de base de datos muy conocidos.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 10-04-2010 a las 14:56:28.
Responder Con Cita
  #9  
Antiguo 10-04-2010
voci voci is offline
Miembro
 
Registrado: oct 2003
Posts: 97
Poder: 21
voci Va por buen camino
Despues de mirar en el BDE Administrator, este me indica que es Microsoft SQL Server.

Saludos.
Responder Con Cita
  #10  
Antiguo 10-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por voci Ver Mensaje
Despues de mirar en el BDE Administrator, este me indica que es Microsoft SQL Server.

Saludos.
Bueno entonces en ese caso para concatenar cadenas en MS SQL Server lo que se hace es concatenarlo con el simbolo "+" muy parecido tal como se hace en Delphi, por tanto tu consulta SQL quedaría mas o menos así:
Código SQL [-]
SELECT * FROM MiTabla t1,Patrones p 
WHERE t1.nombre LIKE '%'+p.Patron+'%'
Consejo:
Antes de querer hacer o implementar algo, lo primero que se debe averiguar, es con que Servidor se está trabajando, ésto lo digo por que tal parece que ni voz mismo sabías el servidor con el que trabajas, lo cual en otras palabras sería el colmo de un desarrollador, o quizas en tu caso haya sido otra persona que desarroló la aplicacion y tú solo la estés modificando o mejorando, de todas forma espero que te haya podido ayudar en algo..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Comparar estructuras y actualizar Base de datos Interbase Chaja Conexión con bases de datos 5 12-07-2021 09:43:25
Comparar Structura y procedimientos de base de datos firebird sierraja Firebird e Interbase 17 11-12-2013 23:48:42
comparar fecha actual con una guardada en mi base d datos chass Varios 6 26-06-2008 18:58:39
Contraseñas guardadas Delar Varios 3 16-07-2007 12:42:11
Cómo se pueden conectar dos bases de datos? ronimaxh Conexión con bases de datos 2 28-06-2003 03:54:33


La franja horaria es GMT +2. Ahora son las 22:17:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi