web-dev-qa-db-fra.com

Concat une chaîne à SELECT * MySql

La requête suivante fonctionne bien avec MySQL:

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

Cela concatre / au champ de titre sélectionné.

Cependant, lorsque j'essaie de faire ce qui suit:

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

Il retourne l'erreur suivante:

 #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

Y a-t-il un moyen de faire en sorte qu'une requête SQL fonctionne avec MySql

29
SaidbakR

Vous ne pouvez simplement pas faire cela en SQL. Vous devez explicitement lister les champs et les concaténer:

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

Si vous utilisez une application, vous pouvez utiliser SQL pour lire les noms de colonne, puis utiliser votre application pour créer une requête comme ci-dessus. Voir cette question stackoverflow pour trouver les noms de colonne: Obtenir les noms de colonne de table dans mysql?

40
Ben Lee

Si vous voulez concaténer les champs en utilisant/comme séparateur, vous pouvez utiliser concat_ws:

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

Vous ne pouvez cependant pas échapper à la liste des colonnes de la requête. La syntaxe * ne fonctionne que dans "select * from". Vous pouvez cependant lister les colonnes et construire la requête de manière dynamique.

24
Joni

Vous ne pouvez pas concaténer plusieurs champs avec une chaîne. Vous devez sélectionner un instand de tous les champs (*).

2
rekire

Vous ne pouvez pas faire cela sur plusieurs champs. Vous pouvez également rechercher this .

1
Rahul Tripathi