80 votes

Est-ce que sqlite supporte un type d'instruction IF(condition) dans une sélection ?

Est-ce que sqlite supporte la fonction sql "if" dans l'instruction select ?

par exemple

select if( length( a ) > 4 , a , ' ') as b
from foo

qui renvoie un a si la longueur est supérieure à 4 caractères, sinon il renvoie ' ' comme b.

S'il supporte une condition dans la sélection, quelle est la syntaxe à utiliser ?

J'ai vérifié http://sqlite.org/lang_corefunc.html mais je ne peux pas le voir.

130voto

Mark Points 21191

Voir le cas expression.

Une expression CASE joue un rôle similaire à IF-THEN-ELSE dans d'autres langages de programmation.

Pour votre exemple

select case when length(a) > 4 then a else '' end as b
from foo

1 votes

Je ne sais pas pourquoi ils ne peuvent pas avoir une syntaxe plus courte pour des choses simples comme l'opérateur ternaire en C.... imaginez la longueur de la requête quand on enchaîne plusieurs déclarations de cas !

18voto

Paul Dixon Points 122033

Vous pouvez utiliser cas pour ça :

select case when length(a)>4 then a else ' ' end from foo;

0 votes

Bizarre ; le lien ne fonctionne pas pour iceweasel. Il provoque une erreur "Document non trouvé" (/lang_5Fexpr.html). L'adresse dans la barre d'adresse sera pourtant la bonne (.../lang_expr.html). Je ne suis pas sûr de la raison de cette erreur. Bien que l'adresse soit correcte, un rafraîchissement ne fonctionne pas ; il faut appuyer sur la touche Entrée de la barre d'adresse pour obtenir la page.

0 votes

Markdown n'aime pas les underscores je suppose. J'ai modifié le lien pour utiliser le redirecteur snurl.

0 votes

Et vous ne devriez pas utiliser un redirecteur [ donc l'URL directe est maintenant là

1voto

SteakOverflow Points 61

Depuis la version 3.32.0 vous pouvez utiliser iif(X,Y,Z) :

select iif( length( a ) > 4 , a , ' ') as b
from foo

De la codécision :

La fonction iif(X,Y,Z) est logiquement équivalente et génère le même bytecode que l'expression CASE "CASE WHEN X THEN Y ELSE Z END".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X