Domanda

perdona la mia domanda newbie, ma perché trovare da '2' o '2' in MySQL restituisce lo stesso disco?

Ad esempio:

Di 'Ho un record con campo di stringa denominata 'lumaca', e il valore è '2'. E il seguente sqls rendimenti stesso record.

SELECT * From articles WHERE slug='2'  
SELECT * From articles WHERE slug='2' 
È stato utile?

Soluzione

Ha a che fare con le regole di confronto del database:

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)

Altri suggerimenti

non tornare sulla stessa riga per l'uguaglianza, ma se si utilizza like si sono probabilmente sempre sulla stessa riga. utilizzando like mysql utilizzerà corrispondenza fuzzy, quindi 2 e 2 sarà lo stesso (afer tutto sono entrambi una forma di 2, non sono?)

Qual è il tipo di dati di lumaca? penso proprio quella numerica. Se ecco mysql fa cast a int, e diventerà eventuali modi '2' o '2' 2. Questo non succederà con i tipi di dati stringa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top