首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >语句具有3种条件SQL

语句具有3种条件SQL
EN

Stack Overflow用户
提问于 2014-11-03 16:30:13
回答 2查看 3.7K关注 0票数 0

我试图用3种条件在SQL中执行IF语句,但当我试图显示消息时,它会显示所有3条消息。一旦这些条件之一为真,我如何结束if语句?

代码语言:javascript
运行
复制
IF( @QuantiteStock > 100) 
    SET @QuantiteStock = @QuantiteStock;
    PRINT  @NomProduit + ' n`a pas été touché.' ;


IF(@QuantiteStock  >= 10 AND @QuantiteStock <= 100) 
    SET @QuantiteStock  = @QuantiteStock *1.25;
    PRINT @NomProduit + ' a été augmenté à ' + CONVERT(VARCHAR(20),@QuantiteStock) ;



    IF( @QuantiteStock < 10) 
        SET @QuantiteStock = 50;
    PRINT @NomProduit + ' a été augmenté à 50' ;
    end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-03 16:33:47

对于多行,您必须使用begin / end,否则,第一行之后的所有内容都不是有条件的。

代码语言:javascript
运行
复制
IF( @QuantiteStock > 100) BEGIN
    SET @QuantiteStock = @QuantiteStock;
    PRINT  @NomProduit + ' n`a pas été touché.' ;
END

所以:

代码语言:javascript
运行
复制
IF( @QuantiteStock > 100) BEGIN
    SET @QuantiteStock = @QuantiteStock;
    PRINT  @NomProduit + ' n`a pas été touché.' ;
END 
ELSE IF (...) BEGIN
    ...
END
ELSE BEGIN
    ...
END
票数 2
EN

Stack Overflow用户

发布于 2014-11-03 16:35:03

在它自己的IF上只应用于下一个语句,而是这样做,

代码语言:javascript
运行
复制
IF( @QuantiteStock > 100) BEGIN
    SET @QuantiteStock = @QuantiteStock;
    PRINT  @NomProduit + ' n`a pas été touché.';
END

IF(@QuantiteStock  >= 10 AND @QuantiteStock <= 100) BEGIN
    SET @QuantiteStock  = @QuantiteStock *1.25;
    PRINT @NomProduit + ' a été augmenté à '
            + CONVERT(VARCHAR(20),@QuantiteStock);
END

IF( @QuantiteStock < 10) BEGIN
    SET @QuantiteStock = 50;
    PRINT @NomProduit + ' a été augmenté à 50';
END

IF只应用于下一个块或组。如果您不使用BEGINEND对语句进行分组,那么它们都将是单独的块或组。

BEGINEND将它们之间的语句分组为一个块。

因为您的条件是相互排斥的,所以可以将它们链接起来,以避免不必要的处理。

代码语言:javascript
运行
复制
IF( @QuantiteStock > 100) BEGIN
    SET @QuantiteStock = @QuantiteStock;
    PRINT  @NomProduit + ' n`a pas été touché.';
END
ELSE IF(@QuantiteStock  >= 10 AND @QuantiteStock <= 100) BEGIN
    SET @QuantiteStock  = @QuantiteStock *1.25;
    PRINT @NomProduit + ' a été augmenté à '
            + CONVERT(VARCHAR(20),@QuantiteStock);
END ELSE BEGIN
    SET @QuantiteStock = 50;
    PRINT @NomProduit + ' a été augmenté à 50';
END
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26718572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档