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

Comment concaténer dynamiquement toutes les colonnes MySQL ?

DDD
Libérer: 2024-10-24 18:38:22
original
1082 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

Ensuite, utilisez GROUP_CONCAT() pour combiner ces noms de colonnes :

<code class="sql">GROUP_CONCAT(CONCAT('`', column_name, '`'))</code>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

Enfin, exécutez la requête dynamique :

<code class="sql">PREPARE stmt FROM @sql;
EXECUTE stmt;</code>
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal