Knud: (MYSQL) concat-Problem mit numerischen Feld

Hallo,

Ich möchte eine Detailsuche über eine Reihe von Feldern realisieren.
Dabei sind bis auf ein Feld alles Felder vom Typ 'Varchar'. Das letzte Feld ist vom Typ Int.

Meine Abfrage sah zunächst wie folgt aus:
select * from telefon where concat_ws(' ',name,vorname,abteilung) like '%$suche%';

Das funktionierte einwandfrei. Dann hab ich das numerische Feld in die Suche mitaufnehmen wollen.
Laut MySql-Reference "MySQL automatically converts numbers to strings as necessary, and vice-versa" also kein Problem, dachte ich, also:

select * from telefon where concat_ws(' ',personalnummer,name,vorname,abteilung) like '%$suche%';

Aber jetzt findet gar nichts mehr! Egal, ob ich personalnummer an den Anfang stelle oder ans Ende oder mittendrin.

Ok, dachte ich, vielleicht gehts halt mit concat(), aber auch da das gleiche Spiel.

Kann mir denn einer sagen, warum das nicht funktioniert?

Gruß,

Knud

  1. Hi,

    Kann mir denn einer sagen, warum das nicht funktioniert?

    nein; aber ich kann Dir sagen, dass Du erstmal mit

    select concat_ws(' ',personalnummer,name,vorname,abteilung) from telefon;

    und

    select '%$suche%';

    verifizieren solltest, ob Du auch das bekommst, was Du erwartest.

    Cheatah

    1. Hi,

      select concat_ws(' ',personalnummer,name,vorname,abteilung) from telefon;

      liefert optisch genau das erwartete Ergebnis, die Felder sind zusammengefügt worden, jeweils mit einem ' ' als Trennzeichen.

      und

      select '%$suche%';

      liefert genau den eingegebenen Suchbegriff.

      Hab mittlerweile noch ein paar weitere tests gemacht...

      concat_ws(' ',personalnummer,kst,name,vorname,abteilung,beschreibung)

      soll bei verschiedenen Suchbegriffen immer mindestens den folgenden zeigen:

      1234 101430 Schröder Knud EDV Support<<

      Die folgenden Begriffe finden den Eintrag (oder mehr):

      1234, 123, 1430, edv, support

      Die folgenden Begriffe finden aber nichts:

      knud, Knud, schröder, der, sch

      Da sowohl name, vorname, abteilung und beschreibung vom Typ varchar sind, die Ausgabe von select concat_ws... korrekt aussieht, ich nach _allen_ Begriffen suchen kann, bloß nicht nach vorname und name, versteh ich so langsam die Welt überhaupt nicht mehr.

      Zur Zeit umgehe ich das Problem mit: (Das funktioniert wiederum einwandfrei, mit allen Feldern)

      concat_ws(' ',kst,name,vorname,abteilung,beschreibung) like '%$wert%' or personalnummer like '%$wert%'

      Liebe Grüße,

      Knud (furchtbar ratlos)