Maison >base de données >tutoriel mysql >Comment concaténer dynamiquement toutes les colonnes MySQL ?
Concaténation dynamique de toutes les colonnes MySQL
Dans MySQL, la concaténation de toutes les colonnes à l'aide du caractère générique * n'est pas prise en charge. Au lieu de cela, vous devez spécifier explicitement chaque nom de colonne dans les fonctions CONCAT() ou GROUP_CONCAT().
Concaténation explicite de colonnes :
Vous pouvez utiliser CONCAT() fonction pour concaténer des colonnes spécifiques :
<code class="sql">SELECT CONCAT(col1, col2, col3, ...) FROM yourtable;</code>
Ou utilisez CONCAT_WS() pour concaténer des colonnes avec un séparateur spécifié, en ignorant les valeurs nulles :
<code class="sql">SELECT CONCAT_WS(',', col1, col2, col3, ...) FROM yourtable;</code>
Concaténation dynamique des colonnes :
Pour éviter de spécifier manuellement les noms de colonnes, vous pouvez utiliser une requête dynamique pour récupérer tous les noms de colonnes de la table information_schema.columns :
<code class="sql">SELECT `column_name` FROM `information_schema`.`columns` WHERE `table_schema` = DATABASE() AND `table_name` = 'yourtable';</code>
Ensuite, utilisez GROUP_CONCAT() pour combiner ces noms de colonnes :
<code class="sql">GROUP_CONCAT(CONCAT('`', column_name, '`'))</code>
Cela entraînera une liste de noms de colonnes entre guillemets, séparés par des virgules, tels que :
<code class="sql">`col1`,`col2`,`col3`,`col4`,...</code>
Avec cela, vous pouvez créer une requête dynamique pour concaténer toutes les colonnes :
<code class="sql">SET @sql = CONCAT( 'SELECT CONCAT_WS(\'\',', GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name), ') AS all_columns FROM yourtable;' );</code>
Enfin, exécutez la requête dynamique :
<code class="sql">PREPARE stmt FROM @sql; EXECUTE stmt;</code>
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!