Die folgende Abfrage funktioniert gut mit MySQL:
SELECT concat(title,'/') FROM `socials` WHERE 1
Es Concat / auf das ausgewählte Titelfeld.
Wenn ich jedoch versuche, Folgendes zu tun:
SELECT concat(*,'/') FROM `socials` WHERE 1
Es gibt den folgenden Fehler zurück:
#1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near '*,'/') FROM `socials` WHERE 1 LIMIT 0, 30' at line 1
Gibt es eine Möglichkeit, eine solche SQL-Abfrage für die Arbeit mit MySql zu erstellen?
In SQL ist das einfach nicht möglich. Sie müssen die Felder explizit auflisten und die einzelnen Felder zusammenfassen:
SELECT CONCAT(field1, '/'), CONCAT(field2, '/'), ... FROM `socials` WHERE 1
Wenn Sie eine App verwenden, können Sie die Spaltennamen mit SQL lesen und anschließend mit Ihrer App eine Abfrage wie oben erstellen. In dieser Stapelüberlauf-Frage finden Sie die Spaltennamen: Tabellenspaltennamen in mysql abrufen?
Wenn Sie die Felder mit/als Trennzeichen verketten möchten, können Sie concat_ws
:
select concat_ws('/', col1, col2, col3) from mytable
Sie können es jedoch nicht vermeiden, die Spalten in der Abfrage aufzulisten. Die * -Syntax funktioniert nur in "select * from". Sie können die Spalten jedoch auflisten und die Abfrage dynamisch erstellen.
Sie können nicht mehrere Felder mit einer Zeichenfolge verketten. Sie müssen eine Feldinstanz von allen auswählen (*
).
Sie können dies nicht für mehrere Felder tun. Sie können auch nach this suchen.