Maison >base de données >tutoriel mysql >Comment concaténer dynamiquement toutes les colonnes MySQL ?

Comment concaténer dynamiquement toutes les colonnes MySQL ?

DDD
DDDoriginal
2024-10-24 18:38:221033parcourir

How to Dynamically Concatenate All MySQL Columns?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn