Je suis assez nouveau en SQL et j'espère que quelqu'un ici pourra m'aider avec cela.
J'ai une procédure stockée dans laquelle je voudrais passer une valeur différente selon qu'une colonne contient un pays donné ou non.
Jusqu'ici, je n'ai utilisé que CASE
lors de la vérification de la correspondance avec un nombre ou une valeur spécifique, aussi je ne suis pas sûr de celui-ci. Est-ce que quelqu'un peut me dire si ce qui suit est valide et correct ou me laisser savoir comment l'écrire correctement (juste pour la partie entre parenthèses)?
(CASE countries
WHEN LIKE '%'+@selCountry+'%' THEN 'national'
ELSE 'regional') AS validity
Notes: @selCountry est le nom de variable d'un pays. Les pays peuvent être vides, un ou plusieurs pays séparés par une virgule et un espace. Fondamentalement, je veux juste vérifier si les pays contiennent @selCountry et si oui, définissez la validité sur «national».
C'est la syntaxe dont vous avez besoin:
CASE WHEN countries LIKE '%'+@selCountry+'%' THEN 'national' ELSE 'regional' END
Bien que, conformément à votre problème initial, je l’aie résolu différemment, en scindant le contenu de @selcountry dans un tableau et en le joignant.
Ajoutez enfin une END
avant le nom d'alias.
CASE WHEN countries LIKE '%'+@selCountry+'%'
THEN 'national' ELSE 'regional'
END AS validity
Par exemple:
SELECT CASE WHEN countries LIKE '%'+@selCountry+'%'
THEN 'national' ELSE 'regional'
END AS validity
FROM TableName