Pregunta

perdona mi pregunta novato, pero ¿por qué la búsqueda por '2' o '2' en MySQL devuelve el mismo registro?

Por ejemplo:

Decir que tengo un registro con el campo de cadena denominada 'bala', y el valor es '2'. Y la siguiente SQLS retornos mismo registro.

SELECT * From articles WHERE slug='2'  
SELECT * From articles WHERE slug='2' 
¿Fue útil?

Solución

Tiene que ver con la intercalación de la base de datos:

mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)

mysql> SELECT '2'='2';
+-----------+
| '2'='2' |
+-----------+
|         0 |
+-----------+
1 row in set (0.00 sec)

mysql> SET NAMES 'utf8' COLLATE 'utf8_unicode_ci';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT '2'='2';
+-----------+
| '2'='2' |
+-----------+
|         1 |
+-----------+
1 row in set (0.00 sec)

Otros consejos

no volviesen la misma fila de la igualdad, pero si se utiliza like es probable que esté recibiendo la misma fila. usando mysql like utilizará coincidencia aproximada, de modo 2 y 2 será el mismo (afer todo lo que son tanto una forma de 2, no son?)

¿Cuál es el tipo de datos de babosa? creo que es uno numérico. Si es así aquí MySQL lo hace echados a int, y se convertirá en alguna forma '2' o '2' 2. Este planteo sucede con los tipos de datos de cadena.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top