Maison > base de données > tutoriel mysql > le corps du texte

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

Linda Hamilton
Libérer: 2024-11-03 08:38:02
original
1000 Les gens l'ont consulté

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

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

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

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal