0
votes

Remplacer la colonne par des valeurs non égales à plusieurs valeurs

Si une valeur dans une colonne n'est pas une ou B, puis remplacez cette valeur avec "non".

SELECT *, 
CASE WHEN ColA NOT IN(A,B) REPLACE (ColA, ColA, 'NO') 
ELSE ColA 
END ColA 
FROM dataset; 


0 commentaires

5 Réponses :


0
votes

Remplacer () n'est pas nécessaire simplement utiliser case expression: xxx


0 commentaires

0
votes
SELECT 
CASE WHEN ColA NOT LIKE 'A' OR 'B' THEN 'NO' ELSE ColA END AS 'ColA'
,ColB
FROM Dataset;

0 commentaires

0
votes

Une autre façon de faire cela ... XXX


0 commentaires

-1
votes

Pour être du côté de sécurité, vous devez également ajouter un NULL code> Vérifiez également. de
Je crois que les normes SQL définies non in () code> ne doivent pas fonctionner avec des valeurs nulles.

comme cola pas dans ('A', 'B') code> est le même Comme écrit cola 'a' ou colb 'B' code> et Sélectionnez 'A' null code> ne doit jamais être vrai. P>

Query strong> p>

SELECT 
  (
    CASE
      WHEN ColA NOT IN('A','B') OR ColA IS NULL
      THEN 'NO'
      ELSE ColA
    END
  ) AS ColA
  , ColB
FROM 
 dataset


0 commentaires

2
votes

Votre code, ne doit pas compiler, donc je suppose que ce n'est pas le code réel. de
(1) Il manque alors après quand .
(2) Les valeurs A et B doivent être jointes aux guillemets simples, sinon elles seraient reconnues comme noms de colonne. de
Donc, il devrait être écrit comme suit: xxx

Ceci produirait les résultats souhaités, sauf s'il y ait un NULL valeur dans cola . de
Dans le cas de null , cola pas dans ('a', 'b') serait évaluer à null et aucun remplacement n'aurait lieu. de
Vous pouvez écrire la déclaration en utilisant Flocon de neige 'S iff () fonction comme ceci: xxx

au cas où cola in ('A', 'B') < / code> évalue vers null alors le FALSE partie de iff () est renvoyé qui est renvoyé qui est 'non' non ' < / p>


0 commentaires