Utilisation d'une instruction CASE dans une clause WHERE dans SQL Server

Scott Holloway

J'essaie de créer un formulaire de requête sur un site Web. Le premier objet est une liste déroulante avec des opérateurs. La première valeur par défaut dans la liste déroulante est NULL(1), la deuxième valeur est LIKE(2), etc... Le deuxième objet est une zone de texte où l'utilisateur peut saisir une chaîne comme "A".

Par conséquent, j'essaie de créer la requête SQL ci-dessous pour simuler les variables provenant du site Web. Il s'exécute et renvoie toutes les valeurs lorsque le fichier @op = 1. Mais j'obtiens toujours l'erreur suivante lorsque je change @op = 2:

La conversion a échoué lors de la conversion de la valeur nvarchar 'Tom LIKE A%' en type de données int."

DECLARE @StartDate DATETIME2(7) = '2017-11-08 00:00:00.0000000 +00:00'
DECLARE @EndDate DATETIME2(7) = '2017-11-08 00:00:00.0000000 +00:00'
DECLARE @Op INT = 2
DECLARE @name NVARCHAR(25) = 'A'
SELECT
    name, 
    dttm
FROM 
    tableName 
WHERE 
    dttm BETWEEN @StartDate AND @EndDate
    AND CASE @Op
        WHEN 1 THEN 1
        WHEN 2 THEN name + ' LIKE ' + @name +'%'
        END <> 0
Gordon Linoff

Ne pas utiliser case. Utilisez simplement la logique booléenne normale :

WHERE dttm BETWEEN @StartDate AND @EndDate AND
      ( (@op = 1) OR
        (@op = 2 AND name LIKE @name + '%')
      )

Votre problème spécifique implique la construction d'une LIKEcomparaison dans une chaîne. Cependant, ce qui précède semble être ce que vous voulez faire.

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Utilisation définie dans une instruction case dans SQL Server

utilisation de l'instruction case dans une clause where

Utilisation de l'instruction IF dans une clause Where dans SQL Server

SQL Server: comment utiliser une variable avec plusieurs variables dans une instruction case dans une clause where

Utilisation d'une colonne de bits dans une clause where SQL Server

Imbrication d'une instruction Case dans une somme - SQL Server

Utilisation de l'instruction Case dans la clause Where dans le développeur SQL

filtrage d'un paramètre dans une clause where à l'aide d'une instruction if/case

Utilisation d'une variable comme clause dans une instruction If

Clause SQL where avec une valeur supérieure ou inférieure à dans une instruction case

Erreur lors de l'utilisation d'un type non booléen dans une instruction case when dans SQL Server

Existe-t-il un moyen d'utiliser in or = avec une instruction case dans la clause where de SQL?

SQL Server: instruction CASE dans la clause WHERE avec condition IN

Instruction SQL Server CASE dans la clause Where de Select

Utilisation de IN () dans une instruction CASE dans Oracle APEX SQL

Utilisation d'une expression régulière pour remplacer la clause where dans l'instruction SELECT

Utilisation d'une plage de nombres dans une instruction Where

Utilisation de l'expression CASE dans une clause where

SQL: instruction IF / CASE dans la clause WHERE

Comment faire une instruction conditionnelle dans la clause SQL where

Utilisation du résultat d'une requête pour déterminer une valeur dans une clause where dans SQL?

Utilisation de USER dans la clause WHERE d'une vue dans Oracle Sql Developer

Utilisation d'un CASE ou IF..ELSE dans la partie AND de la clause WHERE - SQL Server

Utilisation de l'instruction Case dans la clause Where dans Oracle SQL

Utilisation d'une variable dans l'instruction Where

Erreur d'instruction SQL pour une somme avec deux conditions dans la clause Where

Déclarez une variable avec l'instruction SQL SELECT à utiliser dans la clause WHERE

Utilisation d'une instruction CASE dans SQL pour extraire la semaine précédente

SQL Server - l'utilisation de DATALENGTH dans la clause where provoque une erreur de troncature

TOP liste

  1. 1

    comment afficher un bouton au-dessus d'un autre élément ?

  2. 2

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  3. 3

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

  4. 4

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  5. 5

    Conversion double en BigDecimal en Java

  6. 6

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Passer la taille d'un tableau 2D à une fonction ?

  9. 9

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  10. 10

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  11. 11

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  12. 12

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  13. 13

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  14. 14

    Exporter la table de l'arborescence vers CSV avec mise en forme

  15. 15

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  16. 16

    Créer un système Buzzer à l'aide de python

  17. 17

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  18. 18

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  19. 19

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  20. 20

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  21. 21

    Microsoft.WebApplication.targets

chaudétiquette

Archive