Maison >base de données >tutoriel mysql >Comment puis-je exécuter une logique conditionnelle dans les instructions SQL SELECT ?

Comment puis-je exécuter une logique conditionnelle dans les instructions SQL SELECT ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-22 15:16:10858parcourir

How Can I Perform Conditional Logic in SQL SELECT Statements?

Logique conditionnelle dans les instructions SQL SELECT : un guide complet

SQL nécessite souvent une logique conditionnelle dans les instructions SELECT pour modifier ou filtrer les données. L'instruction CASE fournit une solution polyvalente, prise en charge dans de nombreux dialectes SQL.

Pour imiter une structure IF...THEN dans une requête SELECT, utilisez l'instruction CASE comme indiqué ci-dessous :

<code class="language-sql">SELECT CAST(
    CASE
        WHEN condition1 OR condition2 THEN value_if_true
        ELSE value_if_false
    END AS data_type) AS new_column, *
FROM table_name;</code>

Voici un aperçu de la syntaxe :

  • condition1 et condition2 : Les conditions à évaluer.
  • value_if_true et value_if_false : Les valeurs renvoyées selon que les conditions sont vraies ou fausses.
  • data_type : Le type de données du new_column résultat.
  • table_name : La table à partir de laquelle les données sont sélectionnées.

Par exemple, pour ajouter une colonne Saleable à un tableau Product, indiquant la disponibilité du produit en fonction du statut Obsolete et InStock :

<code class="language-sql">SELECT CAST(
    CASE
        WHEN Obsolete = 'N' OR InStock = 'Y' THEN 1
        ELSE 0
    END AS bit) AS Saleable, *
FROM Product;</code>

Une version simplifiée, en omettant CAST, donne un résultat entier :

<code class="language-sql">SELECT CASE
    WHEN Obsolete = 'N' OR InStock = 'Y' THEN 1
    ELSE 0
END AS Saleable, *
FROM Product;</code>
Les instructions

CASE peuvent être imbriquées ou intégrées dans des fonctions d'agrégation. De plus, SQL Server 2012 a introduit l'instruction IIF, offrant une syntaxe concise alternative :

<code class="language-sql">SELECT IIF(Obsolete = 'N' OR InStock = 'Y', 1, 0) AS Saleable, *
FROM Product;</code>

Cela simplifie la logique conditionnelle dans vos SELECT instructions, offrant flexibilité et efficacité dans la manipulation des données.

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