it-swarm.com.de

Konzentrieren Sie eine Zeichenfolge auf SELECT * MySql

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?

29
SaidbakR

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?

40
Ben Lee

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.

24
Joni

Sie können nicht mehrere Felder mit einer Zeichenfolge verketten. Sie müssen eine Feldinstanz von allen auswählen (*).

2
rekire

Sie können dies nicht für mehrere Felder tun. Sie können auch nach this suchen.

1
Rahul Tripathi