Maison >base de données >tutoriel mysql >Comment sélectionner des données dans des colonnes avec des préfixes similaires à l'aide de Dynamic SQL dans MySQL ?

Comment sélectionner des données dans des colonnes avec des préfixes similaires à l'aide de Dynamic SQL dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-03 08:38:021037parcourir

How to Select Data from Columns with Similar Prefixes using Dynamic SQL in MySQL?

SQL dynamique pour la sélection de colonnes génériques

Question :

Supposons que vous ayez une table de base de données avec plusieurs colonnes partageant des préfixes similaires, tels que « Fruit » et « Légume ». Comment pouvez-vous sélectionner efficacement les données de toutes les colonnes commençant par un mot spécifique sans spécifier manuellement le nom de chaque colonne ?

Exemple :

Considérez la structure de table suivante :

<code class="markdown">Foods | Fruit | Vegetable
----------------------
Apples | Banana | Carrots
Pears | Grapes | Potatoes
Oranges | Lemon | Tomatoes</code>

Vous souhaitez sélectionner toutes les colonnes dont le nom commence par « Légume ».

Réponse :

Substitutions directes de caractères génériques dans les requêtes MySQL, telles que SELECT Les % végétaux ne sont pas pris en charge. Pour sélectionner dynamiquement toutes les colonnes répondant à ces critères, vous pouvez créer la requête SQL basée sur les informations obtenues à partir du schéma de base de données. Voici une solution :

<code class="sql">SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'Foods'
  AND table_schema = 'YourDB'
  AND column_name LIKE 'Vegetable%'</code>

Cette requête récupère les noms de toutes les colonnes de la table Foods commençant par « Légume ». Vous pouvez ensuite utiliser ces informations pour construire dynamiquement une deuxième requête qui sélectionne les données des colonnes souhaitées :

<code class="php">$columnList = mysql_query($columnsQuery);
$columnArray = array();
while ($row = mysql_fetch_assoc($columnList)) {
  array_push($columnArray, $row['COLUMN_NAME']);
}
$columns = implode(",", $columnArray);

$query = "SELECT " . $columns . " FROM Foods";</code>

En exécutant cette requête, vous pouvez récupérer toutes les données des colonnes dont les noms commencent par "Légume" dans un seul passage.

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