Bases de Datos > MySQL

 Problema En Clausula Where

(1/2) > >>

Mollense:
Hola gente sabia del foro.

Tengo un problemita, digamos que yo tengo la siguiente tabla:
 
Al realizar la consulta:
--- Código: Text ---Select * FROM test where campoint='h9'; por ejemplo me arroja el siguiente resultado:

Yo supongo que al tratarse de un campo int, se realiza algún tipo de casting o algo por el estilo, resultando ser 'h9' igual a 0, ya que al cambiar el valor a '9h' me devuelve el registro 8. Por resultar '9h' igual a 9 .-

Yo quisiera lograr que en ambos casos la consulta no me devuelva ningún registro.-

Se agradece cualquier sugerencia.-

Nos estamos leyendo :beer:

LeGatoRojo:
yo diria que en caso de tratarse de un dato int, deberias omitir los apostrofes, para que lo tome en valor númerico.

Mollense:
Gracias por contestar.-

De la forma que me sugerís me daría un error por considerarse h9 como el nombre de una columna (Inexistente).-

El problema radica en que es el usuario quien ingresa estos valores (Por lo que puede ingresar cualquier cosa) y por otro motivo que no viene al tema quiero hacerlo de esta manera.-

Un saludo :beer:

Altareum:
Angel_K_ido, me llamó la atención lo que mecionás así que me puse a provar. Al parecer MySQL convierte el texto en nada (o en un 0 silo prefieres).

Si haces una suma por ejemplo:

--- Citar ---SELECT 'hola'+10;
--- Fin de la cita ---
El resultado será 10

Si comparás con un string, el cual no representa un número, te dará siempre verdadero. Ahora bien, si comparas con un string que represente un número, hará la búsqueda normalmente:

Ej:

--- Citar ---Select * FROM test where campoint='9';

--- Fin de la cita ---
Dará como resultado, el registro 8;

Si pruebas otras convinaciones (por ejemplo, comparando con 2e 2o se comprotará erraticamente.


Por lo cual, mis consejo, es para que puedas hacer la consulta que estás intentado, uses:
select * from test where CAST(campoint AS CHAR) = '9h';
No es lo mejor para tablas grandes, ya que salteará el índice, al tener que hacer un casting campo por campo.


Espero que te sirva.
Altareum.

Mollense:

--- Citar ---Espero que te sirva.
Altareum.
--- Fin de la cita ---
Claro que sí!!! Como siempre...
Muchas gracias Altareum.

Otra preguntita ya que estamos...
A que te referís con que:
--- Citar ---No es lo mejor para tablas grandes, ya que salteará el índice, al tener que hacer un casting campo por campo.
--- Fin de la cita ---
No termino de entenderlo porque no estoy accediendo a través del índice  :think: .-

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa