Zeichen mit ; getrennt durchsuchen
AlexKL
- datenbank
Hallo,
ich habe ein Feld in einer Tabelle das Werte durch Semikolon getrennt
speichert, also z.b.
wert1;wert2;wert3;wert4
da kann ein Wert oder 100 drin stehen.
Ich erinnere mich das es die Möglichkeit gab mit Mysql direkt nach einzelnen Werten zu Suchen also bei WHERE gezielt zu Suchen ob einer der Werte enthalten ist.
Kann mir da jemand nochmal weiterhelfen. Kann auch sein das es mit Komma getrennt war damals aber das könnte ich ändern.
Danke
你好 AlexKL,
ich habe ein Feld in einer Tabelle das Werte durch Semikolon getrennt
speichert, also z.b.
wert1;wert2;wert3;wert4da kann ein Wert oder 100 drin stehen.
Ich denke, du suchst LIKE "%wert%".
Aber wenn du ein Feld hast, dass CSV-Werte beinhaltet, hast du definitiv was falsch gemacht beim Datenbank-Design. Wenn du das machst, kannst du die Datenbank auch gleich weglassen, da du quasi alle Vorteile aufgibst.
再见,
克里斯蒂安
Nein Like suche ich nicht. Ich weißt das Mysql die Möglichkeit bietet.
Denn nutze ich like z.b.
%tonne%
und ich habe die werte:
muelltonne,blablabla,balbla
das heißt er gibt den datensatz zurück obwohl da nicht tonne drin steht
Nein Like suche ich nicht. Ich weißt das Mysql die Möglichkeit bietet.
Ich war schon geneigt einfach "doch, suchst du" zu schreiben, aber ich will dich nicht dumm sterben lassen.
Denn nutze ich like z.b.
%tonne%und ich habe die werte:
muelltonne,blablabla,balbla
das heißt er gibt den datensatz zurück obwohl da nicht tonne drin steht
Dann musst du mit CONCAT() arbeiten.
Angenommen dein Feld heisst "foo"
Wert: "muelltonne,blablabla,balbla"
WHERE CONCAT(',', foo, ',') like '%,tonne,%'
Das macht dann daraus ",muelltonne,blablabla,balbla," und darin ist ",tonne," nicht enthalten.
Dass das eine Schweinerei ist und du dein Datenbank-Design überdenken solltest, wurde dir aber schon gesagt. Eine 1:n oder eine n:m-Beziehung (wenn es sich z.B. um Kategorien oder Tags handelt) ist die _wesentlich_ schlauere Lösung.
echo $begrüßung;
Nein Like suche ich nicht. Ich weißt das Mysql die Möglichkeit bietet.
Du meinst bestimmt FIND_IN_SET(), aber das will mit Komma getrennte Werte.
Im allgemeinen ist jedoch von einer derartigen Speicherung abzuraten, besonders wenn dann noch darin gesucht werden soll, denn dazu muss immer ein Full Table Scan gemacht werden, weil sich kein Index verwenden lässt [1]. Besser ist es, jedem Wert seine eigene Zeile zu spendieren. Mit GROUP_CONCAT() kann man bei Bedarf diese Werte wieder zusammenfassen.
[1] abgesehen vom Fulltext-Index, der aber für einen anderen Anwendungsfall gedacht ist.
echo "$verabschiedung $name";