Maison  >  Article  >  base de données  >  Comment concaténer des colonnes MySQL sans lister toutes les colonnes ?

Comment concaténer des colonnes MySQL sans lister toutes les colonnes ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-25 05:27:29852parcourir

How to concatenate MySQL columns without listing all columns?

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!

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