Vinzenz Mai: MySQL Datenbank durchsuchen

Beitrag lesen

Hallo,

Ich will mit diesem Query eine Tabelle nach den Begriffen durchsuchen:

SELECT starting_time, txt_title, txt_opener, id FROM articles WHERE ("txt_opener" LIKE "%gg%" AND "%jj%") OR ("txt_content" LIKE "%gg%" AND "%jj%") OR ("txt_title" LIKE "%gg%" AND "%jj%")

  

> Leider funktioniert es nicht so wie ich will. Wenn ich nur nach "e" oder "a" suche, bekomme ich ein Ergbnis, wenn ich nach einem Wort oder mehreren Wörtern suche, die sicher in Datensätzen vorkommen, bekomme ich kein Ergebnis...  
  
ich weiß leider nicht, was Du willst.  
  
Ich vermute Du möchtest die Datensätze haben, bei denen in mindestens einer der Spalten txt\_opener, txt\_content oder txt\_title sowohl der Text "gg" als auch der Text "jj" enthalten ist. Vermute ich richtig?  
  
Wenn ja: Spaltennamen kannst Du nur dann in doppelte Anführungszeichen setzen, wenn der SQL-Modus [ANSI_QUOTES](http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html#sqlmode_ansi_quotes) aktiviert ist. Ist das nicht der Fall (derzeit Standard), dann kannst Du  
  
a) Spaltennamen, die nicht gequoted werden müssen, einfach nicht quoten  
b) Spaltennamen so quoten, [wie MySQL es erwartet](http://dev.mysql.com/doc/refman/5.1/en/identifiers.html)  
  

> Wo ist da mein Fehler?  
  
Weiterhin kannst Du nicht einfach abkürzend schreiben:  
  
   `txt_opener LIKE '%gg%' AND '%jj%'`{:.language-sql}  
  
sondern musst hübsch ordentlich zweimal prüfen:  
  
   `txt_opener LIKE '%gg%' AND txt_opener LIKE '%jj%'`{:.language-sql}  
  
und das bei jedem Deiner Ausdrücke.  
  
Ach ja: es ist in SQL eine sehr gute Idee, Zeichenketten \*immer\* in einfache Anführungszeichen zu setzen. Im bereits angeführten ANSI\_QUOTES-Modus werden doppelte nicht akzeptiert und viele andere Datenbankmanagementsysteme mögen sowieso keine doppelten Anführungszeichen um Zeichenketten. Deswegen gewöhnt man sich das am besten überhaupt gar nicht erst an und nutzt das, was alle \*immer\* verstehen: einfache Anführungszeichen.  
  
  
Freundliche Grüße  
  
Vinzenz