MySQL 5.0 reporting "concat ist nicht vorhanden"
Habe ich eine Abfrage mit einer komplexen Verkettung in es. Es ist etwas entlang der Linien von der Verknüpfung der Ergebnisse der verschiedenen sub-wählt, wenn die Ergebnisse nicht null sind. Es funktioniert gut (obwohl die Komplexität macht mich ein wenig krank), die auf unserem Entwicklungs-server läuft MySQL 5.1, aber unsere Produktions-server, die ausgeführt wird, 5.0 Berichte
FUNCTION database.concat does not exist
Irgendwelche Ideen, warum das sein könnte? Ein Upgrade ist leider nicht möglich, an dieser Stelle so, es sei denn, jemand hat eine gute Idee, ich bin ziemlich viel stecken Umschreibung in diesem Bericht.
Abfrage ist wie folgt (ja, ich weiß, ich bin schrecklich zu missbrauchen, mysql. Legen wir das beiseite für jetzt. Wenn jemand weiß, wie, einen Weg zu finden, um zu einer untergeordneten select-Anweisung, die von alias, die nützlich sein würde, aber ich habe nie in der Lage, es zu tun, daher die wiederholte Anweisung ausgewertet. Auch die concat gibt NULL
wenn die Argumente sind NULL
, daher die if-Anweisungen.)
select (concat(if((select
concat(if(b.foo is not null, b.foo, ""),
" ",
if(f.bar is not null, f.bar, ""))
from `foo_table` as f
left join `bar_table` as b
on b.SOME_ID = f.SOME_ID
where f.STUDENT_ID = t.STUDENT_ID
and bar.NewID = t.OldID order by bar.id limit 1) is not null,
(select
concat(if(b.foo is not null, b.foo, ""),
" ",
if(f.bar is not null, f.bar, ""))
from `foo_table` as f
left join `bar_table` as b
on b.SOME_ID = f.SOME_ID
where f.STUDENT_ID = t.STUDENT_ID
and bar.NewID = t.OldID order by bar.id limit 1),
""),
" ",
t.reason) as Reason
from table as t
contact
oderconcat
?- Wir können nicht vor Ort Tippfehler, etc ohne ein snippet. Concat sollte es sein und nehmen Sie nur zwei Argumente.
- William concat kann eine beliebige Anzahl Argumente nach dev.mysql.com/doc/refman/5.0/en/...
- Könntest du bitte posten Sie die Abfrage und die genaue Fehlermeldung?
- yep, du hast Recht. Mein Fehler. Quassinoi fing mich zu
- Das wird nicht wirklich helfen, es sei denn, Sie buchen die gesamte Abfrage.
- Tatsächlich... ich habe gerade gelesen das ganze Eintrag von concat_ws und ich finde es stark vereinfachen diese Abfrage...
- Danke für die Hilfe alle!
- Dies ist eine schreckliche Verwendung von korrelierten Unterabfragen, die durch die Art und Weise.
- Ja, ja, es ist. Siehe meine Antwort für eine viel sauberere version.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Und stellen Sie sicher, dass es keine Leerzeichen zwischen
concat
und(
. Sowas:(
. MySQL 5.0 hatte ein solches problem. In 5.1 wurde es gelöst.CONCAT
ist nur lieferbar in5.0
.Sicherzustellen, dass Sie nicht machen ein Tippfehler:
Schrieb ich die Abfrage mit
concat_ws
die einfach ignoriertNULL
Werte anstattNULL
wieconcat
tut. Hier ist das Ergebnis, das ist stark vereinfacht und funktioniert tatsächlich.