Comment concaténer efficacement les colonnes MySQL
Concaténer toutes les colonnes dans MySQL à l'aide du mot-clé * n'est pas réalisable. Au lieu de cela, vous devez lister explicitement toutes les colonnes que vous souhaitez combiner.
Concaténation explicite des colonnes
Pour y parvenir, utilisez la fonction CONCAT :
SELECT CONCAT(col1, col2, col3, ....) FROM yourtable
Vous pouvez également utiliser CONCAT_WS pour omettre les valeurs nulles :
SELECT CONCAT_WS(',', col1, col2, col3, ....) FROM yourtable
Concaténation dynamique des colonnes
Si la spécification manuelle des colonnes n'est pas pratique, envisagez d'utiliser une requête dynamique pour obtenir tous les noms de colonnes :
SELECT `column_name` FROM `information_schema`.`columns` WHERE `table_schema`=DATABASE() AND `table_name`='yourtable'
Combinez ce résultat avec GROUP_CONCAT pour générer une liste de noms de colonnes entre guillemets, séparés par des virgules :
GROUP_CONCAT(CONCAT('`', column_name, '`'))
Requête dynamique complète
Avec ces éléments, vous pouvez construire une requête dynamique :
SELECT CONCAT( 'SELECT CONCAT_WS(\'\',', GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name), ') AS all_columns FROM yourtable;') FROM `information_schema`.`columns` WHERE `table_schema`=DATABASE() AND `table_name`='yourtable' INTO @sql;
Cette requête génère une chaîne de type :
SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable
Exécutez cette chaîne en utilisant :
PREPARE stmt FROM @sql; EXECUTE stmt;
Cette approche élimine le besoin de listage manuel des colonnes, garantissant une concaténation dynamique et évolutive.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!