Text nach Treffern durchsuchen

Tommy57

Erfahrenes Mitglied
Hallo,

ich möchte gerne YouTube-Titel nach Wörtern aus der Datenbank durchsuchen. So soll zum Beispiel geprüft werden, ob im Titel ein Land wie z.B. Deutschland oder Germany vorkommt. Würdet ihr das auch so lösen?

Code:
SELECT
  *
FROM
  country
WHERE
  ? LIKE CONCAT('%', name, '%')

Gruß, Tommy
 
Hi

Bis auf die fehlende Spalte, und das unnötige concat ('%', name, '%' => '%name%'), warum nicht?
 
Hi sheel,

also die "Spalte" ist name und das CONCAT ist wegen der Word Boundaries. Mein ? ist der Text, in dem ich die Wörter suche. Er beginnt und endet mit einem Leerzeichen. Ich habe sonst leider keine Idee, wie man das besser machen könnte. Ich habe schon ? REGEXP CONCAT('[[:<:]]', name, '[[:>:]]') probiert, aber da habe ich dann Schwierigkeiten mit den Sonderzeichen. Meine bisherige Variante schwächelt aktuell nur bei Satzzeichen, die ich mit einem REPLACE entfernen könnte.

Meine Frage daher, kann man das auch besser lösen oder ist die Lösung schon gut?
 
Ein Beispiel könnte so aussehen:

Code:
SELECT
  *
FROM
  soccer
WHERE
  ' Zlatan Ibrahimović, Ronaldo and Messi ' LIKE CONCAT('% ', name, ' %')

Mit REGEX verliere ich Zlatan wegen des Sonderzeichens und die aktuelle Variante stört sich nur am Komma, was ich wie gesagt mit einem REPLACE entfernen kann.

Hat jemand vielleicht eine bessere Idee, wie man sowas lösen würde?
 
Ach so, die Spalte ist im zweiten Teil und der Text im ersten... jetzt versteh ich das erst.

Jedenfalls, welche Zeichensätze und Kollation haben Spalten, Tabellen usw.?
Mit ć und , sollten keine Probleme auftreten.
 
Ja genau. Ich benutze utf8_general_ci. Daher habe ich mit LIKE keine Probleme. Nur die Word Boundaries bereiten mir etwas Kopfschmerzen. Da ist meine Idee ja, Leerzeichen zu platzieren und Satzzeichen zu entfernen.

Die Idee erfüllt seinen Zweck. Mir ist halt nur nix besseres eingefallen.
 
Zuletzt bearbeitet:
Zurück