Ver Mensaje Individual
  #5 (permalink)  
Antiguo 23/05/2012, 08:43
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Problema con UPPER

Como yo lo veo. Si quieres que en tus consultas no se distinga entre mayúsculas y minúsculas, debes usar para el campo en el que buscas una collation con terminación _ci (case insensitive) acorde con tu charset. Puede hacerse al vuelo en la consulta, pero yo te diría que indicaras una collation de ese tipo para el campo
Me explicaré
Imaginemos que tu base, tabla y campo usan un charset latin1
pues al campo de la tabla sobre el que realizas esas búsquedas le pones la collation latin1_spanish_ci
ALTER TABLE `tutabla` CHANGE `campo` `campo` VARCHAR( 50 ) CHARACTER SET latin1 COLLATE latin1_spanish_ci NOT NULL

Vigila el tamaño y si aceptas NOT NULL. Con phpmyadmin es muy fácil. Accedes a la base, entras en la tabla y luego en estructura editas el campo y le cambias la collation.

Pero ojo, si el charset es utf8, tendrás que usar utf8_spanish2_ci
ALTER TABLE `tutabla` CHANGE `campo` `campo` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_spanish2_ci NOT NULL

Estas collations o cotejamientos son apropiados para el español, pero si usas otras lenguas podríamos buscar el cotejamiento apropiado.

La propuesta de davikt es también buena idea, pero no con _bin, pues por binario se hace búsqueda exacta, lo que tú quieres evitar; además lo que hace es cambiar el cotejamiento por defecto de tu base en general. También funcionará, pero si no has elegido cotejamiento, la pondrá a todos los efectos, y es posible que tú no desees que funcione así en todos los campos.