【问题标题】:using if statement how to replace values使用 if 语句如何替换值
【发布时间】:2013-04-13 05:23:43
【问题描述】:

我有两张桌子,

数据库 1:

表 1:

  • Id -001(int)

  • 名称-xxx(varchar)

  • 男性 -0(位)

  • Female-1(位)

数据库 2:

表 2:

  • Id -1 (int)

  • Ca.Name-yyy (varchar)

  • 性别 - M 或 F (varchar)

这些是我的桌子。我想将database2,table 2中的数据更新到database1,table1。所以我创建了更新查询。但我对 Gender 字段有疑问

Select 'UPDATE T1
 SET T1.MALE ='+ CASE WHEN r.Gender = 'M' THEN 0 ELSE 1 END

 FROM T2 As r

在下面的代码中,我加注了星号,我怀疑如何在这里使用 if 语句。任何人都明白纠正我的问题?

【问题讨论】:

    标签: sql sql-server-2008 if-statement sql-update case


    【解决方案1】:

    为此使用case when

    关注这个问题:

    SQL Server: CASE WHEN OR THEN ELSE END => the OR is not supported

    CASE  
      WHEN GENDER='M' THEN 0 
      ELSE 1 
    END 
    

    这可能是你的情况。

    更多语法详情:CASE (Transact-SQL)

    【讨论】:

      【解决方案2】:

      同样,您需要使用CASE WHEN。查询如下所示:

      UPDATE T1 
      SET T1.MALE = CASE WHEN T2.caname = 'm' THEN 0 ELSE 1 END,
          T1.female = CASE WHEN T2.caname = 'm' THEN 1 ELSE 0 END  // you also need update this otherwise a person would end up with two genders :)
      FROM TABLE1 T1
      INNER JOIN table2 T2 ON T2.ID = T1.ID
      

      SQL FIDDLE DEMO:

      【讨论】:

      • 出现错误,例如“将 varchar 值 'UPDATE Jobs SET T1.MALE =' 转换为数据类型 int 时转换失败。”
      • 在您的问题中,您是否还可以发布列的DATATYPE...比如它的 int、varchar、bit 等...或发布整个错误
      • "将 varchar 值 'UPDATE Jobs SET T1.MALE =' 转换为数据类型 int 时转换失败。"
      • 我希望你不要将 select 语句与 update 语句一起使用......就像你展示的问题一样......这不是正确的方式......按照我在小提琴中展示的方式去做演示..先更新然后使用选择。
      猜你喜欢
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-03
      • 2014-11-29
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      相关资源
      最近更新 更多