Maison > base de données > tutoriel mysql > Comment puis-je utiliser une instruction CASE pour filtrer dynamiquement les données dans une clause SQL WHERE ?

Comment puis-je utiliser une instruction CASE pour filtrer dynamiquement les données dans une clause SQL WHERE ?

Susan Sarandon
Libérer: 2025-01-10 07:15:45
original
363 Les gens l'ont consulté

How Can I Use a CASE Statement to Filter Data Dynamically in a SQL WHERE Clause?

Instruction CASE dans la clause SQL WHERE

En SQL, l'instruction CASE fournit un mécanisme d'évaluation conditionnelle. Il vous permet de spécifier différentes conditions et de renvoyer les valeurs numériques correspondantes en fonction de ces conditions. Ceci est particulièrement utile dans les clauses WHERE pour filtrer les données en fonction de différentes conditions.

Supposons le scénario suivant : vous devez récupérer les données d'une vue nommée "viewWwhat" en fonction des valeurs du paramètre de type d'emplacement "@locationType" et du paramètre d'ID d'emplacement "@locationID". Le type d'emplacement peut être « emplacement », « zone » ou « division ».

Utiliser l'instruction CASE

Pour obtenir cette fonctionnalité à l'aide d'une instruction CASE dans la clause WHERE, vous pouvez créer la requête comme suit :

<code class="language-sql">SELECT column1, column2
FROM viewWhatever
WHERE
@locationID = 
  CASE @locationType
      WHEN 'location' THEN account_location
      WHEN 'area' THEN xxx_location_area 
      WHEN 'division' THEN xxx_location_division 
  END</code>
Copier après la connexion

Description

  • L'instruction CASE est placée après le mot-clé WHERE.
  • Il évalue la valeur de "@locationType" en tant que variable de condition.
  • Pour chaque clause WHEN, spécifiez les colonnes dont vous souhaitez vérifier l'égalité avec "@locationID" en fonction du type d'emplacement.
  • Le mot-clé END termine l'instruction CASE.

Évitez les opérateurs égaux redondants

Veuillez noter que dans l'exemple fourni, la partie "=@locationID" à la fin de chaque clause WHEN est incorrecte. L'instruction CASE elle-même attribue la colonne correcte à comparer avec "@locationID".

SQL dynamique

Si votre type d'emplacement et les noms de colonnes ne sont pas connus lorsque vous écrivez la requête, vous pouvez créer une instruction CASE à la volée à l'aide d'une procédure stockée ou de SQL dynamique.

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