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

mayusculas en un select

Estas en el tema de mayusculas en un select en el foro de Bases de Datos General en Foros del Web. buenas, tengo una consulta a una base de datos de una pagina web hecha con php, la consulta es la siguiente: SELECT p.* FROM jos_catprojects ...
  #1 (permalink)  
Antiguo 22/08/2008, 04:50
 
Fecha de Ingreso: julio-2008
Mensajes: 50
Antigüedad: 15 años, 9 meses
Puntos: 0
mayusculas en un select

buenas, tengo una consulta a una base de datos de una pagina web hecha con php, la consulta es la siguiente:

SELECT p.*

FROM jos_catprojects as p

WHERE p.introtext LIKE '%$Buscar%' OR p.documentos LIKE '%$Buscar%' OR p.fulltext LIKE '%$Buscar%' OR p.procedimiento LIKE '%$Buscar%'

ORDER BY id

Osea hago una consulta para que me muestre los articulos que tengan la palabra que tengo guardada en $Buscar, mi problema es que no distingue entre mayusculas y minisculas, osea que si yo tengo en $Buscar por ejemplo "HOLA" y en la base de datos tengo "hola" cuando hago la consulta me devuelve ese registro y quiero evitar eso, como lo puedo hacer?
  #2 (permalink)  
Antiguo 22/08/2008, 06:00
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Respuesta: mayusculas en un select

¿?¿?¿?
En las BDs que he trabajado este no es el comportamiento!
En que BD trabajas?
  #3 (permalink)  
Antiguo 22/08/2008, 08:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: mayusculas en un select

Entro en el hilo porque, como tengo la misma situación, creo que puedo decir algo. El problema es que el cotejamiento del campo que buscas es case insensitive, es decir, no distingue mayúsculas de minúsculas. Si te empeñas en buscar exactamente, distinguiendo entre mayúsculas y minúsculas, sólo tienes que cambiar el cotejamiento del campo que buscas. Yo, por ejemplo, uso habitualmente el cotejamiento utf8_unicode_ci para poder buscar sin distinguir entre mayúsculas y minúsculas, pero si quiero que se distinga en la consulta, sólo tengo que cambiar el cotejamiento de ese campo a binario, en el caso de utf8, el cotejamiento sería utf8_bin. En el caso de usar la codificación latin1 y tener un cotejamiento latin1_spanisch_ci, también puedes cambiarlo a latin1_bin.

Esta es la consulta que en MySQL, el gestor que yo uso, te cambia el cotejamiento de un campo; observa que la codificación es utf8 (SET utf8):

ALTER TABLE `nombretabla` CHANGE `campobuscado` `campobuscado` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL

Última edición por jurena; 24/08/2008 a las 10:59
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:41.