Knud: deutsches Phänomen bei MySQL und concat()

Hallo,

ich gebe zu, der Titel klingt schon a bissl komisch, aber was besseres ist mir zur Beschreibung nicht eingefallen.
Okay, ...

ich hab eine Suche über eine Reihe von Feldern in der Tabelle gebastelt:

select * from tabelle where concat_ws(',',name,vorname,adresse) like '%$suche%';

funktioniert einwandfrei.

Okay, dann kam ein numerisches Feld (Typ INT) dazu, also:
select * from tabelle where concat_ws(',',name,vorname,adresse,kst) like '%$suche%';
Zuanfang schien alles sauber zu laufen, aber dann suchte ich nach 'schröder' (oder irgendein anderer Begriff, der deutsche Umlaute enthält aber gefunden werden müsste) aber den hat er nicht gefunden.
Kurzer Test, kst wieder raus und siehe da, er findet auch 'schröder' wieder. kst wieder rein und schwupps 'schröder' wird wieder nicht gefunden. Alle anderen Begriffe ohne deutsche Umlaute funktionieren und werden gefunden.

Kann mir das einer erklären??

Gruß,

Knud

  1. Hallo,

    concat_ws kenne ich gar nicht...nur concat
    selektiert concat die felder generell als strings?

    Odium

    1. Hallo,

      concat_ws kenne ich gar nicht...nur concat
      selektiert concat die felder generell als strings?

      concat_ws ist im Grunde gleich zu concat, nur dass dann ein Separator angegeben wird.

      concat (Name,' ',vorname,' ',telefon)

      macht also dasselbe wie

      concat_ws (' ',name,vorname,telefon)

      Aber sowohl mit concat als auch mit concat_ws dasselbe Problem.
      Laut Dokumentation macht concat aus concat(14.3) '14.3' sollte also alles als String behandeln. Aber scheinbar gibts bei der Konvertierung Probleme. Keine Ahnung. Das ist eben mein Problem.
      Und wie ich es lösen könnte, ausser ein ODER-Konstrukt bauen zu müssen.

      Gruß,

      Knud