2012-11-25 24 views
26

Die folgende Abfrage fein mit MySQL arbeitet:Concat eine Zeichenfolge SELECT * MySql

SELECT concat(title,'/') FROM `socials` WHERE 1 

Es Concat / auf den ausgewählten Titelfeld.

aber wenn ich versuche, die folgendes zu tun:

SELECT concat(*,'/') FROM `socials` WHERE 1 

Es gibt den follwoing Fehler:

#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 

So ist es eine Möglichkeit, um eine solche SQL-Abfrage mit MySQL arbeiten

+0

Nein, das kann nicht in einer Ebene ausgewählt werden. Können Sie eine gespeicherte Prozedur verwenden? – rene

+1

Keine gespeicherte Prozedur ist keine Option für mich. – SaidbakR

Antwort

34

Sie können das in SQL einfach nicht tun. Sie müssen explizit die Felder auflisten und concat jeder:

SELECT CONCAT(field1, '/'), CONCAT(field2, '/'), ... FROM `socials` WHERE 1 

Wenn Sie eine App verwenden, können Sie SQL verwenden, um die Spaltennamen zu lesen, und verwenden Sie dann Ihre Anwendung eine Abfrage wie oben zu konstruieren. Sehen Sie sich diese stackoverflow-Frage an, um die Spaltennamen zu finden: Get table column names in mysql?

+0

Vielen Dank, aber der unterscheidbarste Aspekt dieser Antwort, um es als richtig zu erhalten, zeigt, wie man die Auswahl mehrerer Felder erreicht. – SaidbakR

+1

@ sємsєм, Sie tun es, indem Sie sie manuell auflisten (oder, wenn Sie eine App verwenden, können Sie SQL verwenden, um die Spalten zu lesen, und verwenden Sie dann Ihre App, um eine Abfrage wie oben zu konstruieren). –

2

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

1

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

20

Wenn Sie die Felder mit/als Separator verketten möchten, können Sie concat_ws verwenden:

select concat_ws('/', col1, col2, col3) from mytable 

Sie können nicht entkommen die Spalten in der Abfrage obwohl auflistet. Die * -Syntax funktioniert nur in "select * from". Sie können die Spalten jedoch auflisten und die Abfrage dynamisch erstellen.