2010-04-05 9 views
9

perdone mi pregunta de novato, pero ¿por qué encontrar por '2' o '2' en Mysql devuelve el mismo registro?Hmm, ¿por qué encontrar por '2' o '2' devuelve el mismo registro?

Por ejemplo:

Decir que tengo un registro con el campo de cadena denominada 'bala', y el valor es '2'. Y los siguientes SQL devuelven el mismo registro.

SELECT * From articles WHERE slug='2' 
SELECT * From articles WHERE slug='2' 
+0

+1 ¿Qué es ese segundo 2 carácter, de todos modos? :) –

+1

@ Jørn U + FF12 FULLWIDTH DIGIT TWO. –

Respuesta

13

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) 
+0

Ver: http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html –

+0

Esto es realmente útil, gracias :) – Shaoshing

0

no volviesen la misma fila de la igualdad, pero si se utiliza like que están consiguiendo probablemente la misma fila. usando like mysql usará concordancia difusa, por lo que 2 y 2 serán iguales (después de todo, ambos son una forma de 2, ¿no?)

+0

Sí, mysql devolvió el mismo registro, como la respuesta descrita, esto está relacionado con la intercalación. – Shaoshing

0

¿Cuál es el tipo de datos de slug? creo que es numérico. Si es así, aquí mysql lo convierte a int, y cualquier forma '2' o '2' se convertirá en 2. Esto no sucederá con los tipos de datos de cadena.

+0

Las babosas siempre son texto. –

Cuestiones relacionadas