Hmm, ¿por qué la búsqueda por '2' o '2' devolver el mismo registro?
-
24-09-2019 - |
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'
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.