[MySQL] Suche in varchar-Feldern.

dow

Lieutenant
Registriert
Sep. 2002
Beiträge
732
Hallo,

ich suche einen MySQL-Befehl um Felder im varchar-Format zu durchsuchen.

Es geht darum z.B. das Artikelnummer-Feld einer Warendatenbank nach einem String zu durchforsten.

Habe es mit MATCH () AGAINST () versucht, sieht aber aus als müsste da mindestens eins der zu durchsuchenden Felder im Format TEXT sein damit es ein Ergebnis gibt.
(Wenn ich ein varchar-Feld durchsuche gibt es trotz Deklaration als FULLTEXT kein Ergebnis)

Gibt es nicht einen Befehl wie CONTAINS oder so etwas?
 
dow schrieb:
Hallo,

ich suche einen MySQL-Befehl um Felder im varchar-Format zu durchsuchen.

Es geht darum z.B. das Artikelnummer-Feld einer Warendatenbank nach einem String zu durchforsten.

Habe es mit MATCH () AGAINST () versucht, sieht aber aus als müsste da mindestens eins der zu durchsuchenden Felder im Format TEXT sein damit es ein Ergebnis gibt.
(Wenn ich ein varchar-Feld durchsuche gibt es trotz Deklaration als FULLTEXT kein Ergebnis)

Gibt es nicht einen Befehl wie CONTAINS oder so etwas?

SELECT varcharfeld FROM tabelle WHERE varcharfeld='vergleichsstring'

oder

SELECT varcharfeld FROM tabelle WHERE varcharfeld like 'vergleichsmuster'
 
Du kannst auch mit Platzhaltern suchen. Das wären

  • "%" für beliebig viele beliebige Zeichen
  • "_" für ein beliebiges Zeichen
Sieht dann in der Query ungefähr so aus:
Code:
SELECT feld FROM tabelle WHERE feld like "%suchmich%"
 
Eine Frage meinerseits dazu.
Wie kann ich nach mehreren Begriffen suchen? Sprich, ich habe 2,3,... Wörter und möchte nur den Datensatz, wo diese Begriffe alle in einer Zelle vorkommen.

Thx 4 help
 
@schedeffen:
Code:
SELECT feld
FROM tabelle
WHERE feld like "%wort1%"
AND feld like "%wort2%"
AND feld like "%wortN%"
Das selbe funktioniert auch mit OR wenn ein Text mindestens eins dieser Worte enthalten soll.
 
Wichtig bei ist aber auch:
Bei And wird logischerweise nur die Artikel ausgegeben, in denen Beides vorkommt,
Bei Or aber nur nie wo entweder das eine, oder das andere drin vorkommt,
so iss es zumindest bei PHP wird ja dann hier auch so sein oder ???
Wenn ja wie heißt dann der letzte der drei befehle xor ?
 
SELECT ... WHERE ((feld like '%suche%') AND (feld NOT like '%suche2%')) OR ((feld like '%suche2%') AND (feld NOT like '%suche%'))


XOR gibts bei mySQL leider ned soweit ich weiss...
 
Zuletzt bearbeitet:
da denke ich doch spontan mal an de Morgan ;-)

Die Negation der Konjuktion ist die Disjunktion der negierten Aussage ;-) :watt:

Für diejenigen, denen das nichts sagt :-)

NOT(A OR B) = NOT A AND NOT B

Geht natürlich auch andersherum:

Die Negation der Disjunktion ist die Konjunktion der negierten Aussage :volllol:

NOT(A AND B) = NOT A OR NOT B

Aber ich würde mein SQL-Statement wohl auch mit like "%Suchbegriff%" absetzen:-)

Grüße
DanGermany
 
Gut sorry, dachte MySQL und PHP sind von den Kontrollobjekten her gleich
Naja... denn halt nicht.
 
Zurück
Oben