SQL SQL Abfrage bei Buchstaben und Zahlen funktionslos --> leeres Resultat

Plankokan

Ensign
Registriert
Mai 2008
Beiträge
192
Hallo,
habe für die meisten unter euch bestimmt ein leicht zu lösendes Problem. Habe eine MySQL Datenbank welche 4 Spalten hat und in der letzten Spalte jeweils die ID der Zeile steht, welche z.b. so aussieht: "3B3CDED4A6969DB7CB9EA905" (ohne "").

Als Datentyp habe ich schon VARCHAR sowie TEXT probiert. Beides endet bei untem stehendem Befehl einem leerem Resultat obwohl diese Kombination aber vorhanden ist...

Code:
SELECT ID 
FROM Tabelle 
WHERE ID = "3B3CDED4A6969DB7CB9EA905"

Übrigens: Ersetzte ich die ID nur durch Buchstaben oder Zahlen funktioniert die Abfrage. Wie ist es möglich die Mischung aus beiden Abzufragen?

Wäre super wenn mir da jemand helfen könnte!

Gruß,
Picola
 
Naja mit Kombination meine ich die Zufällige ID.

Auszug der Spalten und einer Zeile. Projekt ist ein Vokabeltrainer.

Text | Text | Text | Text (Datentypen)
Lektion | Fremdsprache | Deutsch | ID
L1 - T1 | certo | sicher | F847B10F051C26C953BC612E
L1 - T2 | il gatto | Katze | 3B3CDED4A6969DB7CB9EA905

SELECT *
FROM Tabelle
WHERE ID = "3B3CDED4A6969DB7CB9EA905"

Dieser Befehl sollte mir doch die untere Zeile ausgeben, bekomme allerdings ein leeres Ergebnis
 
Hast Du mal geschaut ob die ID ausgegeben werden kann?

Also ob der string = string ist?

Lass Dir mal alles ausgeben, normal müsste die WHERE Klausel ohne Probleme gehen.
 
@volcem
Wie meinst du das genau? Die Ausgabe ohne die WHERE Klausel funktioniert und ich bekomme alles Zeilen inklusive aller ID's angezeigt.

@philippgerard
Mit Buchstaben habe ich mehr Kombinationen als nur mit Zahlen und es kommt somit nicht so oft vor dass Kombinationen Doppelt vorkommen --> Weniger Arbeit für den Server zu prüfen ob diese schon vorhanden ist bei einem hinzufügen einer Vokabel
 
Also ich hab grad mal testweise eine Tabelle nach deinem Schema angelegt und dieselben Werte eingetragen und hier geht es.
Für deinen Einsatzzweck würde ich aber eher eine numerische ID nehmen und da halt einstellen, dass er die automatisch erhöht. Dann sind Kollisionen ausgeschlossen.
 
Könnte das dann an dem Server liegen? Habe einen Webspace bei Netcup. Abfrage hab ich bis jetz testweise immer mit MyPhpAdmin gemacht.

Und wie meinst du dann genau immer um eins erhöhen? Das würde dann bei über 2000 Vokabeln ins Uferlose laufen...
 
Hm kann sein, dass da ein altes MySQL läuft, das fehlerhaft ist. Du kannst ja mal als Query folgendes eingeben:
Code:
select "3B3CDED4A6969DB7CB9EA905"="3B3CDED4A6969DB7CB9EA905"
Da müsste er dann 1 liefern.

Du willst doch, dass jede Zeile eine eindeutige ID hat, oder? Das kannst du bei MySQL einstellen, dass er dann automatisch für jede eingefügte Zeile eine neue ID anlegt. Du brauchst dich also garnicht mehr drum kümmern, IDs zu generieren.
 
Das Wäre natürlich Ideal, hast du da für mich das dazugehörige Script? Die Zeit von MySql zu Schulzeiten ist schon etwas länger entfernt :D

Anhang:

SELECT "3B3CDED4A6969DB7CB9EA905" = "3B3CDED4A6969DB7CB9EA905"
FROM vokabeltrainer

Da bekomm ich dann 992x (Anzahl aller bis jetz vorhandenen Vokabeln) die 1 ausgegeben
 
Zahlen sind sehr viel performanter in der Abfragegeschwindigkeit und haben zahllose andere Vorteile (auto_increment uvm.). Ich würde Deine Wahl wirklich überdenken, so viele Vokabeln wie int(11) wirst Du eh nicht im Deinem Skriptlein haben.
 
ich denke in deiner id sind irgendwelche unsichtbaren sonderzeichen wie leerzeichen drin.

Code:
select id from tabelle
where
lower(name) = 'katze';

sollte dir ja eine id zurückgeben und daher sollte dann auch :
Code:
select id from tabelle
where 
id = (select id from tabelle where
        lower(name) = 'katze');
funktionieren
 
Da sind vermutlich keine Sonderzeichen drin.

@Picola: Benutz' in deinem SQL-Statement mal die einfachen Anführungszeichen ' statt den doppelten ". Klappt es dann?
 
@Cobinja

Funktioniert leider auch nicht :(

@AlbertLast

Das funktioniert, ich bekomme bei beiden die ID ausgegeben, allerdings funktioniert so mein Vorhaben nicht die Zeile nach der ID zu suchen und zu löschen... Und da es ja vorkommen kann das Deutsche Wörter oder Lektionen öfter vorkommen dachte ich mir das sich das mit den ID's besser lösen lässt. Ebenso beim Ändern eines Wertes.
 
Hi,

Mit Buchstaben habe ich mehr Kombinationen als nur mit Zahlen und es kommt somit nicht so oft vor dass Kombinationen Doppelt vorkommen --> Weniger Arbeit für den Server zu prüfen ob diese schon vorhanden ist bei einem hinzufügen einer Vokabel

Also bei einem Vokabeltrainer sollte eine "id" mit "int", "AutoInc" und "Not Null" MEHR als genügen. Diese Unique-IDs / GUIDs sind was nettes, allerdings handelt man sich damit gerne mal Performanceprobleme, Abfrageprobleme oder Ähnliches ein.

Hatte hier auf Arbeit gerade so einen Fall in MSSQL, da wurde auch mit UIDs gearbeitet, die mussten dann zur Abfrage / für den Vergleich umständlich auf string gecastet werden und danach wieder auf GUID - MEHR als dämlich, umständlich und unperformant.

Falls es dir möglich ist stelle einfach auf eine "normale" id um, wenn nicht => weitere Antworten abwarten.

VG,
Mad
 
Danke für eure Hilfe, werde nun denke ich die Variante mit dem Auto Increase verwenden!
 
Zurück
Oben