Bonjour,
je voudrais savoir s'il existe sous SQL SERVER une fonction IF pour le SELECT, je connais deja CASE mais je voudrais savoir s'il y en a une autre..
merci
Bonjour,
je voudrais savoir s'il existe sous SQL SERVER une fonction IF pour le SELECT, je connais deja CASE mais je voudrais savoir s'il y en a une autre..
merci
peux tu me donner la synthaxe?
IF...ELSE
Impose les conditions d'exécution d'une instruction Transact-SQL. L'instruction Transact-SQL qui suit le mot clé IF et sa condition est exécutée si la condition est remplie (lorsque l'expression booléenne renvoie la valeur TRUE). Le mot clé facultatif ELSE introduit une instruction Transact-SQL de remplacement exécutée lorsque la condition IF n'est pas remplie (si l'expression booléenne renvoie FALSE).
Syntaxe
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Arguments
Boolean_expression
Expression qui renvoie la valeur TRUE ou FALSE. Si l'expression booléenne contient une instruction SELECT, cette dernière doit être mise entre parenthèses.
{sql_statement | statement_block}
Toute instruction ou tout groupe d'instructions Transact-SQL tels que définis dans un bloc d'instructions. À moins que vous n'utilisiez un bloc d'instructions, la condition IF ou ELSE ne peut affecter les performances que d'une seule instruction Transact-SQL. Pour définir un bloc d'instructions, utilisez les mots clés de contrôle de flux BEGIN et END. Les instructions CREATE TABLE ou SELECT INTO doivent se référer au même nom de table si elles sont utilisées dans les deux aires IF et ELSE du bloc IF...ELSE.
Notes
Vous pouvez utiliser les constructions IF...ELSE dans des lots, dans des procédures stockées (dans lesquelles ces constructions sont souvent utilisées pour tester l'existence de certains paramètres) et dans des requêtes appropriées.
Les tests de la condition IF peuvent être imbriqués après une autre condition IF ou après une condition ELSE. Le nombre de niveaux d'imbrication est illimité.
Exemple
A. Utilisation d'un bloc IF...ELSE
Cet exemple illustre une condition IF avec un bloc d'instructions. Si le prix moyen du titre n'est pas inférieur à 15 $, il imprime le message suivant : Prix moyen du titre supérieur à 15 $).
USE pubs
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
PRINT 'Average title price is more than $15.'
Voici le jeu de résultats obtenu :
The following titles are excellent mod_cook books:
Title
-----------------------------------
Silicon Valley Gastronomic Treats
The Gourmet Microwave
(2 row(s) affected)
B. Utilisation de plusieurs blocs IF...ELSE
Cet exemple utilise deux blocs IF. Si le prix moyen du titre n'est pas inférieur à 15 $, il imprime le message suivant : Prix moyen du titre supérieur à 15 $. Si le prix moyen des livres de cuisine moderne est supérieur à 15 $, le système imprime l'instruction selon laquelle les livres de cuisine moderne sont chers.
USE pubs
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') > $15
BEGIN
PRINT 'The following titles are expensive mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
oui ca je l'avais vu dans l'aide...
Mais ce n'est pas vraiment la question que j'avais poser....
La question etait de savoir si on pouvait un truc du genre :
SELECT IF(champ ='A') THEN 'titi' ELSE 'toto' AS ChampCreer
FROM TableAvecChamp;
Je ne pense pas en fait... il faut passer par TSQL et ca ne marche pas pour moi...
Bonjour,
Tu peux tutiliser CASE pour faire ça, voir ici :Envoyé par argv666
http://www.developpez.net/forums/vie....php?t=411536.
Sinon IIF existe aussi mais il a l'air d'être 1 peu imprévisible ...
A+
[edit]Dsl, j'ai 1 peu m...é avec le lien, celui-ci est le bon : http://www.developpez.net/forums/vie...asc&highlight= [/edit]
1) IF ou IIF n'existe pas pour les ordres SQL
2) la seule structure de branchement dans un ordre SQL c'est le CASE
3) il existe des fonctions conditionnelles, telle que COALESCE ou NULLIF.
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Oups ... Pas taper !Envoyé par SQLpro
C pas ma faute si Bill fait ce qu'il veut avec les normes.
Ds le forum SQL Server c'est difficile de ne pas citer des syntaxes proprios MS ...
Et puis (sans vouloir lancer 1 débat) ne pas en parler ne les empêchera pas d'exister ...
Mais finalement je ne m'en sort pas trop mal sur ce coup là, j'avais d'abord mis CASE ;-)
A +
Partager