Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Phaenomen



tomes
09-11-2002, 20:56
Kann mir einer folgendes Phaenomen erklaeren:

-----------------------------------
mysql> select name,sum(anzahl) as summe from infect where name like 'BackDoor.Generic.%' group by name order by summe DESC;
+----------------------+-------+
| name | summe |
+----------------------+-------+
| BackDoor.Generic.72
| 5 |
| BackDoor.Generic.72 | 5 |
| BackDoor.Generic.71 | 1 |
| BackDoor.Generic.70 | 1 |
| BackDoor.Generic.70
| 1 |
| BackDoor.Generic.71
| 1 |
+----------------------+-------+
6 rows in set (0.00 sec)

mysql> select name,sum(anzahl) as summe from infect where name like 'BackDoor.Generic.72' group by name order by summe DESC;
+---------------------+-------+
| name | summe |
+---------------------+-------+
| BackDoor.Generic.72 | 5 |
+---------------------+-------+
1 row in set (0.00 sec)

mysql> select name,sum(anzahl) as summe from infect where name='BackDoor.Generic.72' group by name order by summe DESC;
+----------------------+-------+
| name | summe |
+----------------------+-------+
| BackDoor.Generic.72
| 10 |
+----------------------+-------+
1 row in set (0.06 sec)
-----------------------------------
Dieser Zeilen Umbruch in der ersten Abfrage deutet doch eigendlich auf Leerstelle/n hin, oder ?
Aber warum diese unterschiedlichen Ausgaben ?

T;o)Mes

tomes
10-11-2002, 00:02
hier das Ergebniss:
--------------------------
mysql> select datum,name,sum(anzahl) as summe from infect where name like 'BackDoor.Generic.72_' group by name order by summe DESC;
+-------------+----------------------+-------+
| datum | name | summe |
+-------------+----------------------+-------+
| 5 Nov 2002 | BackDoor.Generic.72
| 5 |
+-------------+----------------------+-------+
1 row in set (0.00 sec)

mysql> select datum,name,sum(anzahl) as summe from infect where name like 'BackDoor.Generic.72%' group by name order by summe DESC;
+-------------+----------------------+-------+
| datum | name | summe |
+-------------+----------------------+-------+
| 5 Nov 2002 | BackDoor.Generic.72
| 5 |
| 7 Nov 2002 | BackDoor.Generic.72 | 5 |
+-------------+----------------------+-------+
2 rows in set (0.00 sec)

mysql> select datum,name,sum(anzahl) as summe from infect where name like 'BackDoor.Generic.72' group by name order by summe DESC;
+-------------+---------------------+-------+
| datum | name | summe |
+-------------+---------------------+-------+
| 7 Nov 2002 | BackDoor.Generic.72 | 5 |
+-------------+---------------------+-------+
1 row in set (0.00 sec)
---------------------------------------
Das Ergebniss aus der ersten Query deutet doch auf ein Zeichen ( _ ) hin, oder ?
Der Unterstrich heist doch irgendein Zeichen ?
Wie bekomme ich den jetzt raus was das ist ? Ein dump ?

T;o)Mes

tomes
10-11-2002, 16:17
Musse den Tag "per Hand" ein paar Eintraege nachtragen und habe dabei nicht darauf geachtet, dass das Script am Ende jedes Eintrages ein Zeilenumbruch macht ;)
Den hab ich bei der "Handkorrektur" natuerlich nicht gesetzt ;)
Trotzdem ist der Unterschied zwischen like und = schon komisch finde ich.

T;o)Mes

P.S.: Ach so, der Dump brachte es zu Tage.

Martin Ament
10-11-2002, 19:41
Hi Tomes,

da bist du auf ein Phaenomen gestossen, das mich einiges an Ärger gekostet hat.

Like ist eine Ähnlichkeitssuche,
= bringt nur 100% Übereinstimmungen

Ich habe auch in unserer Benutzerdb immer mit Like gesucht. Bis eines Tages wir plötzlich lauter Programmfehler bekamen.

Lag dann daran, dass ein sehr intelligenter Mitarbeiter einen Benutzer mit der Kennung '%' angelegt hat.
Das brachte natürlich diese Kennung bei jeder Suche mit. Da haben wir lange gesucht, bis wir diesen Fehler gefunden haben.

tomes
11-11-2002, 15:47
Aber was mich ein wenig verwundert hat, ist dass er mir bei:
where name like 'BackDoor.Generic.72' nur 5 Treffer gebracht hat
aber bei
where name='BackDoor.Generic.72' alle 10 Eintraege

In der Tabelle standen sie so drin:
5x --> BackDoor.Generic.72
5x --> BackDoor.Generic.72\n

Eigendlich haette ich die Ergebnisse andersrum Erwartet ;)

T;o)Mes