Foros del Web » Programando para Internet » PHP »

Forzar comparacion en MYSQL

Estas en el tema de Forzar comparacion en MYSQL en el foro de PHP en Foros del Web. Hola. Fijense que si comparo un campo de mysql tipo varchar con un string le da igual si esta en mayusculas o no. Es decir ...
  #1 (permalink)  
Antiguo 27/08/2002, 20:01
Avatar de AngelRoyo  
Fecha de Ingreso: marzo-2002
Ubicación: Santiago de Chile
Mensajes: 207
Antigüedad: 22 años
Puntos: 5
Forzar comparacion en MYSQL

Hola.
Fijense que si comparo un campo de mysql tipo varchar con un string le da igual si esta en mayusculas o no. Es decir es insencible a mayusculas minusculas y acentos.

SELECT * FROM $tabla WHERE (nombre_lop='$valor')

si en nombre_lop tuviera "Días" y lo comparo con $valor="dias" MYSQL considera que son iguales.

¿Como puedo hacer que sea sencible a esas diferencias.?

Gracias.
  #2 (permalink)  
Antiguo 27/08/2002, 20:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: Forzar comparacion en MYSQL

Parece q vas a tener q usar LIKE para hacer la condicion "case sensitive" ... y/o definir los campos String (VARCHAR, etc) de tus tablas como BYNARY.

mas info:
<a href='ir.asp?http://www.mysql.com/doc/en/String_comparison_functions.html' target='_blank'>http://www.mysql.com/doc/en/String_compa...</a>
<a href='ir.asp?http://www.mysql.com/doc/en/Case_sensitivity.html' target='_blank'>http://www.mysql.com/doc/en/Case_sensiti...</a>

Un saludo,
  #3 (permalink)  
Antiguo 28/08/2002, 00:53
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 22 años, 6 meses
Puntos: 6
Re: Forzar comparacion en MYSQL

Hay dos formas de hacer lo que necesitas sin usar LIKE, la primera es usando la funcion STRCMP(expr1,expr2) la cual regresa 0 si las cadenas son iguales, -1 si el primer argumento es menor que el segundo segun el orden y por ultimo 1 si es al reves.

A hora la formas mas sencilla de forzar la comparacion puede ser usando el operados BINARY forzando a que se compare el campo seleccionado tomando encuenta las mayusculas.
Código:
SELECT BINARY 'c' = 'C'
Si son diferentes el query devuelve 0.

Saludos!.
Mty. NL.
  #4 (permalink)  
Antiguo 30/08/2002, 02:46
Avatar de AngelRoyo  
Fecha de Ingreso: marzo-2002
Ubicación: Santiago de Chile
Mensajes: 207
Antigüedad: 22 años
Puntos: 5
Re: Forzar comparacion en MYSQL

Aquí presento mi solucion.
Recomiendo leer el manual en este lugar.
&gt; 6.3.2.2 Case Sensitivity &lt;

campo:nombre_bin
tipo:tinyblob
sentencia sql:SELECT * FROM $tabla WHERE nombre_bin='$valor'

Y bien. Compara sensitivy.

Errores: Me arrojaba errores si probaba colocando BINARY en la sentencia.

Pues la solución es sólo colocar el campo de tipo binario o blob. En mi caso tinyblob.

Valido solo para mysql &gt;=3.23.xx

Gracias por vuestros comentarios.
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 08:01.