Frage

meine newbie Frage vergeben, aber warum von ‚2‘ oder ‚2‘ in Mysql gibt den gleichen Datensatz zu finden?

Zum Beispiel:

sagen, ich habe einen Datensatz mit String-Feld mit dem Namen ‚Slug‘, und der Wert ‚2‘. Und der folgende SQLs kehrt denselben Datensatz.

SELECT * From articles WHERE slug='2'  
SELECT * From articles WHERE slug='2' 
War es hilfreich?

Lösung

Es hat mit der Zusammenstellung Ihrer Datenbank zu tun:

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)

Andere Tipps

Sie sollten nicht die gleiche Zeile auf Gleichheit zurück, aber wenn Sie like verwenden Sie wahrscheinlich die gleiche Reihe zu bekommen. mit like mysql wird Fuzzy Matching verwenden, also 2 und 2 werden das gleiche sein (afer alle sind sie beide eine Form von 2, nicht wahr?)

Was ist der Datentyp von Slug? Ich denke, seine numerischen ein. Wenn ja hier nicht mysql es int werfen und alle Möglichkeiten, ‚2‘ oder ‚2‘ werden worden 2. Dieses mit String-Datentypen passieren würde nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top