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

[SOLUCIONADO] Como seleccionar partes exactas de un record

Estas en el tema de Como seleccionar partes exactas de un record en el foro de Bases de Datos General en Foros del Web. Tengo un problema y voy a tratar de explicarme lo mejor posible. Tengo un campo en mi base de datos el cual almacena varias categorías ...
  #1 (permalink)  
Antiguo 29/05/2008, 14:33
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 18 años, 5 meses
Puntos: 281
Como seleccionar partes exactas de un record

Tengo un problema y voy a tratar de explicarme lo mejor posible. Tengo un campo en mi base de datos el cual almacena varias categorías separadas por espacios, por ejemplo:

Código:
1 12 31
Lo que necesito es hacer una consulta que compare la variable que envía un formulario, '2' por ejemplo, y encuentre todos los records que tengan ese mismo valor exacto dentro de ese campo. Cuando digo valor exacto quiero decir '2', no un valor que contenga esa variable, por ejemplo '12', osea que no puedo usar:

Código:
valor LIKE '%variable%'
Pero tampoco puedo usar:
Código:
valor = '%variable%'
Ya que tampoco serían iguales. Por ejemplo, '1 2 13' no es igual a '2' pero en este caso el '2' esta incluido dentro. Podria de alguna forma usar el espacio para hacerlo único y así usar LIKE o existe otra forma de hacerlo?

Espero haberme explicado bien.

Saludos.
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...
  #2 (permalink)  
Antiguo 29/05/2008, 16:24
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: Como seleccionar partes exactas de un record

Hola, si lo que dices:
Cita:
Tengo un campo en mi base de datos el cual almacena varias categorías separadas por espacios
Es cierto, creo que esto prodia ayudarte:

Cita:
DECLARE @TABLE TABLE ( INTID INT, VARDESC VARCHAR(20))
INSERT INTO @TABLE VALUES ( 1, '1 22 3 4 2' )
INSERT INTO @TABLE VALUES ( 2, '1 2 2 3 4' )
INSERT INTO @TABLE VALUES ( 3, '2 1 222 3 4' )

SELECT *
FROM @TABLE
WHERE VARDESC LIKE '% 2 %' OR
VARDESC LIKE '2 %' OR
VARDESC LIKE '% 2'
Salu2
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
  #3 (permalink)  
Antiguo 29/05/2008, 16:45
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Como seleccionar partes exactas de un record

Una sugerencia con expresion regular para encontrar el número 2 en ese campo cadena de texto con caracteres numéricos. Esto te buscará el '2'. Lo que hace es buscar una palabra que sólo tiene el carácter 2. Donde pone 2 puedes escribir cualquier número, claro.

SELECT * FROM tutabla WHERE campo REGEXP '[[:<:]]2[[:>:]]'
  #4 (permalink)  
Antiguo 29/05/2008, 19:04
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 18 años, 5 meses
Puntos: 281
Respuesta: Como seleccionar partes exactas de un record

Gracias por sus respuestas. Trate de usar expresiones regulares pero por alguna razon no funciona. Creo que es por el hecho de que el tipo del campo es un varchar y no un integrer. Esa hubiera sido la solución idónea. En cuanto a jugar con el espacio, he hecho algunas pruebas pero me falta probar varias posibilidades más. Ya les informaré si funciona.

Saludos.
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...
  #5 (permalink)  
Antiguo 30/05/2008, 02:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Como seleccionar partes exactas de un record

Juaniquillo,

la búsqueda con REGEXP funciona perfectamente con VARCHAR y entiende, como te dije, el 2 como una palabra con un carácter. ¿Qué base de datos utilizas?: Yo te he puesto una sintaxis regexp para MysQL y te puedo decir que funciona perfectamente con campos varchar. Esta sintaxis controla todo los espacios en blanco, los signos de puntuación, etc. Creo que es tu solución, pero no entiendo por qué no te funciona. Si usas MySQL deberías ver qué pasa cuando haces la consulta con PHPMyAdmin, lo digo por si el problema lo tuvieras con el programa que interactúa con la base. También deberías decirnos qué versión de la base tienes, pues a veces es ahí donde está el problema. Yo lo he probado en una MySQL 5.0 lanzando desde PHPMyAdmin.

He probado la sintaxis con PHP y funciona perfectamente, sólo que la variable que te traigas debes introducirla así:
$query="SELECT * FROM tutabla WHERE campo REGEXP '[[:<:]]{$numero}[[:>:]]'";

Última edición por jurena; 30/05/2008 a las 05:28
  #6 (permalink)  
Antiguo 30/05/2008, 08:23
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 18 años, 5 meses
Puntos: 281
Respuesta: Como seleccionar partes exactas de un record

Hola jurena. Efectivamente estoy usando MySQL y PHP, y sí estaba usando variables. Puede se que ese haya sido el problema. Voy a probar una vez mas y te dejo saber. Saludos.
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...
  #7 (permalink)  
Antiguo 02/06/2008, 10:25
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 18 años, 5 meses
Puntos: 281
Respuesta: Como seleccionar partes exactas de un record

Hola jurena, ya tuve la oportunidad de probar la consulta y funcionó perfectamente. Muchas gracias.
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...
  #8 (permalink)  
Antiguo 02/06/2008, 11:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Como seleccionar partes exactas de un record

Me alegro, y perdona mi insistencia, pues veía que te alejabas de la solución que consideraba perfecta para lo que querías.
  #9 (permalink)  
Antiguo 04/06/2008, 10:08
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 18 años, 5 meses
Puntos: 281
Respuesta: Como seleccionar partes exactas de un record

Al contrario, gracias por insistir. Para mi fue la solución ideal. Saludos.
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...
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 12:18.