Como puedo hacer esto

12/08/2003 - 19:18 por cric[py] | Informe spam
Hola a todos.
Tengo una pequeña aplicacion Web en VS.Net hecha en VB. En mi base de datos
cree un procedimiento almacenado como el que sigue.

ALTER PROCEDURE GetInventario
@IPNum nvarchar(15), @MACAddress nvarchar(12)
AS
SELECT * FROM Inventario where IP = @IPNum OR MAC = @MACAddress
RETURN

El cual trae los registros que coinciden. Funciona, pero trae si coincide
exactamente el IP o el MAC, pero quiero poder tambien traer los registros
mas parecidos o que coincidan lo mas posible.
Ej. si coloco un IP 10.0.0.5 que traiga el o los que coinciden
pero si coloco 10.0.0 que me traigan todos los que coinciden sin importar
el resto es decir 10.0.0.1, 10.0.0.2 etc.
Ya probe con CONTAINS, MATCHES pero no logro que funcione.
Como podria hacerlo?
Saludos

Preguntas similare

Leer las respuestas

#1 Marino Posadas
12/08/2003 - 19:54 | Informe spam
Hola

Prueba esto:

SELECT * FROM Inventario where IP LIKE "%" + @IPNum +"%" OR MAC LIKE "%" +
@MACAddress + "%"
RETURN


Saludos cordiales
Marino Posadas
MVP .NET Framework

www.ElAveFenix.net

"cric[py]" escribió en el mensaje
news:
Hola a todos.
Tengo una pequeña aplicacion Web en VS.Net hecha en VB. En mi base de


datos
cree un procedimiento almacenado como el que sigue.

ALTER PROCEDURE GetInventario
@IPNum nvarchar(15), @MACAddress nvarchar(12)
AS
SELECT * FROM Inventario where IP = @IPNum OR MAC = @MACAddress
RETURN

El cual trae los registros que coinciden. Funciona, pero trae si coincide
exactamente el IP o el MAC, pero quiero poder tambien traer los registros
mas parecidos o que coincidan lo mas posible.
Ej. si coloco un IP 10.0.0.5 que traiga el o los que coinciden
pero si coloco 10.0.0 que me traigan todos los que coinciden sin


importar
el resto es decir 10.0.0.1, 10.0.0.2 etc.
Ya probe con CONTAINS, MATCHES pero no logro que funcione.
Como podria hacerlo?
Saludos


Respuesta Responder a este mensaje
#2 cric[py]
12/08/2003 - 20:53 | Informe spam
Error mio, deberia ser ' y no " para que acepte la sentencia. Funciona bien,
a decir verdad demasiado bien, el tema esta es que me trae simpre todos los
registros, es decir:
si en mi tabla tengo los siguientes registros
IP MAC
10.0.0.5 000EA1800900
10.0.0.6 000EA10134A5
10.0.0.7 000eA1F90812
10.0.0.8 A0B70025B10C

y al poner por ejemplo: 10.0.0 deberia traer todos, Hasta aqui el
procedimiento funciona muy bien
pero si coloco 10.0.0.5 deberia traer solamente una fila, pero me trae
todos.
Voy a seguir jugando un poco mas con esta sentencia.
Una duda, porque el MATCHES no funciona, me dice que hay error en el
procedimiento.
Saludos


"Marino Posadas" escribió en el mensaje
news:
Hola

Prueba esto:

SELECT * FROM Inventario where IP LIKE "%" + @IPNum +"%" OR MAC LIKE "%"


+
@MACAddress + "%"
RETURN


Saludos cordiales
Marino Posadas
MVP .NET Framework

www.ElAveFenix.net

"cric[py]" escribió en el mensaje
news:
> Hola a todos.
> Tengo una pequeña aplicacion Web en VS.Net hecha en VB. En mi base de
datos
> cree un procedimiento almacenado como el que sigue.
>
> ALTER PROCEDURE GetInventario
> @IPNum nvarchar(15), @MACAddress nvarchar(12)
> AS
> SELECT * FROM Inventario where IP = @IPNum OR MAC = @MACAddress
> RETURN
>
> El cual trae los registros que coinciden. Funciona, pero trae si


coincide
> exactamente el IP o el MAC, pero quiero poder tambien traer los


registros
> mas parecidos o que coincidan lo mas posible.
> Ej. si coloco un IP 10.0.0.5 que traiga el o los que coinciden
> pero si coloco 10.0.0 que me traigan todos los que coinciden sin
importar
> el resto es decir 10.0.0.1, 10.0.0.2 etc.
> Ya probe con CONTAINS, MATCHES pero no logro que funcione.
> Como podria hacerlo?
> Saludos
>
>


Respuesta Responder a este mensaje
#3 cric[py]
13/08/2003 - 18:55 | Informe spam
Hola.
He encontrado la forma de hacer lo que yo quería y aunque funciona, no me
parece la mejor solucion, pero una es mejor que nada.
Es asi:
-
ALTER Procedure GetInventario
@IPNum nvarchar(15), @MACAddress nvarchar(12) = ''
AS
if (select count(*) from Inventario where IP = @IPNum or MAC = @MACAddress)
= 0
SELECT * FROM Inventario WHERE (IP LIKE @IPNum + '%') OR (MAC LIKE
@MACAddress + '%')
else
select * from Inventario where IP = @IPNum or MAC = @MACAddress
return
-
Asi, si no encuentra uno que coincida, traerá todos los que se parezcan, si
no, traerá el que coincide
Como dije no me parece la mejor opción porque tendrá que realizar por lo
menos dos consultas y si la base de datos es grande tardará un poco mas
(creo..)
Si alguien encuentra una mejor solución me lo hace saber por favor
Saludos


"Marino Posadas" escribió en el mensaje
news:
Hola

Prueba esto:

SELECT * FROM Inventario where IP LIKE "%" + @IPNum +"%" OR MAC LIKE "%"


+
@MACAddress + "%"
RETURN


Saludos cordiales
Marino Posadas
MVP .NET Framework

www.ElAveFenix.net

"cric[py]" escribió en el mensaje
news:
> Hola a todos.
> Tengo una pequeña aplicacion Web en VS.Net hecha en VB. En mi base de
datos
> cree un procedimiento almacenado como el que sigue.
>
> ALTER PROCEDURE GetInventario
> @IPNum nvarchar(15), @MACAddress nvarchar(12)
> AS
> SELECT * FROM Inventario where IP = @IPNum OR MAC = @MACAddress
> RETURN
>
> El cual trae los registros que coinciden. Funciona, pero trae si


coincide
> exactamente el IP o el MAC, pero quiero poder tambien traer los


registros
> mas parecidos o que coincidan lo mas posible.
> Ej. si coloco un IP 10.0.0.5 que traiga el o los que coinciden
> pero si coloco 10.0.0 que me traigan todos los que coinciden sin
importar
> el resto es decir 10.0.0.1, 10.0.0.2 etc.
> Ya probe con CONTAINS, MATCHES pero no logro que funcione.
> Como podria hacerlo?
> Saludos
>
>


Respuesta Responder a este mensaje
#4 melvin
15/08/2003 - 03:47 | Informe spam
has esto, usa el operador like (parecido)

ALTER PROCEDURE GetInventario
@IPNum nvarchar(15), @MACAddress nvarchar(12)
AS
SELECT * FROM Inventario where IP like @IPNum% OR MAC like
@MACAddress%
RETURN
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida