Concat() 'verschluckt' manchmal die Umlaute

Hallo Wissende,
irgendwie habe ich gerade ein Verständnisproblem bei MySQL.
(MySQL 5.0.16 und phpMyAdmin 2.6.4-pl4).

Dies funktioniert wie gewünscht (d.h. zeigt Umlaute):

 select concat\_ws(", ", Vorname, Nachname)
 from Mitarbeiter;

Dies funktioniert nicht wie gewünscht (d.h. die Umlaute fehlen):

 select concat\_ws(", ", Vorname, Nachname, Kinder)
 from Mitarbeiter;

(Kinder ist int und „select concat_ws(“, „, Vorname, Nachname, 2) from Mitarbeiter;“ geht natürlich auch)

Ich wäre für eine Idee dankbar. Ich habe keinen Ansatzpunkt was da falsch laufen könnte.

Vielen Dank!
Thomas

Hallo unwissender :wink:
Ich hatte auch schon mal solch ein problem. Die ursache war, dass die host schriftart nicht mit der schriftart des pc’s übereinstimmte. Die umlaute kammen bei mir ‚^‘ für ü und ‚^‘ für ä usw. daher. Ich habe einfach die schriftart vom host courier new auch auf dem pc installiert. Danach konnte ich die datei öffnen und auf die gewünschte schriftart ändern.
Ich glaube, dass ich diese frage schon mal beantwortet habe, wie wärs mit „der suchende der findet“.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo andnotexists,

leider schrammst Du knapp am Thema vorbei … :smiley:
Aber trotzdem vielen Dank für den Versuch!!!

Bitte immer zuerst die Frage genau lesen und dann erst schreiben, denn

Dies funktioniert wie gewünscht (d.h. zeigt Umlaute ):

select concat_ws(", ", Vorname, Nachname)
from Mitarbeiter;

Die Umlaute werden also im Normalfall richtig angezeigt. Es geht hier also NICHT um das „Anfänger“-Problem mit der Schriftart.
Wie Du richtig schreibst, hätte es dafür jede Menge Artikel im Archiv gegeben. Wenn ich das Problem überhaupt gehabt hätte … :wink:

Ich vermute übrigens, daß es sich bei dem Problem um einen Fehler in der Funktion handelt.

Tschau,
Thomas

Hi,

select concat_ws(", ", Vorname, Nachname, cast(Kinder as char))
from Mitarbeiter;

sollte funktionieren.

Viel Spaß!
Thomas

Hallo thomas1588
Ich benutze das ibm-sql und dieses hat leider seine macken. Ich verstehe aber deine abfrage:
select concat_ws(", „, Vorname, Nachname)
Nicht:
Was soll das (“, ",…
Ich kenne nur das like ‚Meie%‘, wenn ich z.b. ein text-feld habe. Aber nicht das doppelte hochkomma.
Oder wenn ich die daten z.b. ins exel importieren möchte.
Also
select ‚*‘,feld1,’*’,feld2,’*’,feld2,’*’
from usw.
Damit ich ein eindeutiges zeichen habe, um die datensätze zu trennen.
Danke, gruss and

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo thomas1588
Ich benutze das ibm-sql und dieses hat leider seine macken.
Ich verstehe aber deine abfrage:
select concat_ws(", „, Vorname, Nachname)
Nicht:
Was soll das (“, ",…
Ich kenne nur das like ‚Meie%‘, wenn ich z.b. ein text-feld
habe. Aber nicht das doppelte hochkomma.
Oder wenn ich die daten z.b. ins exel importieren möchte.
Also
select ‚*‘,feld1,’*’,feld2,’*’,feld2,’*’
from usw.
Damit ich ein eindeutiges zeichen habe, um die datensätze zu
trennen.
Danke, gruss and

Hallo andnotexists,

hier ein Auszug aus der MySQL-Dokumentation:

CONCAT_WS(trennzeichen, zeichenkette1, zeichenkette2,…)

CONCAT_WS() steht für CONCAT mit Trennzeichen und ist eine spezielle Form von CONCAT(). Das erste Argument ist das Trennzeichen für die restlichen Argumente. Das Trennzeichen kann eine Zeichenkette sein, so wie die übrigen Argumente. Wenn das Trennzeichen NULL ist, ist das Ergebnis NULL. Die Funktion überspringt jegliche NULLs und leere Zeichenketten nach dem Trennzeichen-Argument. Das Trennzeichen wird zwischen den zu verknüpfenden Zeichenketten hinzugefügt:

mysql> select CONCAT_WS(",",„Vorname“,„Zweiter Vorname“,„Nachname“);
-> ‚Vorname,Zweiter Vorname,Nachname‘
mysql> select CONCAT_WS(",",„Vorname“,NULL,„Nachname“);
-> ‚Vorname,Nachname‘

Tschau,
Thomas

Tschau thomas1588
Ein’s verstehe ich aber nicht.
Wenn ein feld null ist, erwarte ich doch, dass dort nicht’s ist. Null ist meiner meinung nach nichts, wenn im feld eine 0 geschrieben wurde, ist die abfrage ja klar.
Aber eben ich arbeite mit dem ibm-sql und nicht mit dem mysql.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo andnotexists,

Ein’s verstehe ich aber nicht.
Wenn ein feld null ist, erwarte ich doch, dass dort nicht’s
ist. Null ist meiner meinung nach nichts,

genau das steht ja auch in der MySQL-Dokumentation zu concat_ws()
(sogar an einem Beispiel :wink: )

wenn im feld eine 0
geschrieben wurde, ist die abfrage ja klar.

Vorsicht!
Seit wann ist 0 im SQL gleich NULL? Ich kenne zwar kein IBM-SQL, kann mir aber auch nicht vorstellen, daß es dort so ist.
Und wie in der richtigen Antwort an mich geschrieben wurde, habe ich auch bloß das „cast“ vergessen, denn die Parameter dieser Funktion müssen Zeichen bzw. Zeichenketten sein.
(Du müßtest dann die 0 also auch noch casten)

Aber eben ich arbeite mit dem ibm-sql und nicht mit dem mysql.

Sorry, aber die Fragestellung bezog sich ja direkt auf MySQL.

Tschau,
Thomas

Tschau thomas
Eben leider nicht. Ich bin auch schon ein parmal darüber gestolpert.
Es gibt aber leider einen unterschied, ob in einem feld
z.b. nrvrn00 = ‚0‘
o.der nrvrn00 is null
ist.
Ich konnte leider das db-modell nicht mitgestalten…
aber ich würde elementare sache folgendermassen lösen:
ein textfeld immmer auf ‚irgendwas‘ als text
und eine zahl die der benutzer eingeben kann immer mit z.b. ‚2‘
also ein nrvrn00 = 9999 oder ein sarec00 = ‚2‘, immer als zahl
abspeichern. Die arbeit danach ist immmer nur einfacher.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]