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
1037 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!

source:php
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