【问题标题】:How can I set a BIT variable based on a value variable?如何根据值变量设置 BIT 变量?
【发布时间】:2020-02-15 09:02:58
【问题描述】:

我有:

DECLARE @Authenticated BIT

If @@ROWCOUNT > 0
 begin
   SELECT @Authenticated = 1
 end ELSE
 begin
   SELECT @Authenticated = 0
 end 

有没有一种方法可以在没有 BEGIN END 的情况下做到这一点,并且设置 BIT 数据类型是表示 True of False 的好方法吗?

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    您可以使用CASE 更简洁地执行此操作,如下所示:

     SET @Authenticated = (SELECT CASE WHEN @@ROWCOUNT >0 THEN 1 ELSE 0 END)
    

    另外,BIT 是表示 True/False 的好选择,因为这几乎就是位的工作方式 - 0 或 1。

    【讨论】:

    • 谢谢。我会在 4 分钟内接受这个答案。我也可以问一下。使用 SET 是一种更好的设置值的方法。我的代码正在使用:SELECT @Result = 'F'。我应该为此使用 SET 吗?
    • 这个答案很好地比较了两者:stackoverflow.com/questions/866767/…
    【解决方案2】:

    你可以像下面这样改变你的IF .. ELSE结构并使用SET命令

    DECLARE @Authenticated BIT
    
    If @@ROWCOUNT > 0
    SET @Authenticated = 1
    ELSE
    SET @Authenticated = 0
    

    【讨论】:

      【解决方案3】:
      DECLARE @Authenticated BIT
      SET @Authenticated = @@ROWCOUNT
      

      也应该有效,因为 BIT 值如果不为零,则为真/1。

      【讨论】:

        猜你喜欢
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多