【问题标题】:SQL: Replace Some Strings with other String Values in One Column and Write to Temp TableSQL:用一列中的其他字符串值替换某些字符串并写入临时表
【发布时间】:2017-11-13 18:42:09
【问题描述】:

更新:遵循论坛答案提供的语法...点击错误

SELECT * INTO #df_ERA4_a_temp 
            CASE WHEN [REQMNT] = 'A' THEN 'ANT'   
                 WHEN [REQMNT] = 'A-12' THEN 'A12'
                 WHEN [REQMNT] = 'ADS-B' THEN 'ADSB' 
                 ELSE [REQMNT]
            END  
    FROM #df_ERA4_a

错误:消息 156,级别 15,状态 1,第 129 行 关键字“CASE”附近的语法不正确。


我正在尝试清理临时表的一列中的文本数据。之后,我想将该表写入另一个临时表。

以下是我使用的代码……但我遇到了错误。

SELECT * INTO #test_b
        CASE WHEN [COL] = 'A-12' THEN 'Ant'
             WHEN [COL] = 'A-9' THEN 'Alpha'  
             WHEN [COL] = 'AD' THEN 'Aging'
             ELSE WHEN [COL] = 'Art' THEN 'Artwork'     
    FROM #test_a

我收到的错误是:关键字“CASE”附近的语法不正确

【问题讨论】:

  • 临时表太多 :(
  • 您使用的是哪个DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。您的查询是非标准 SQL
  • 我编辑了我的答案,如果我正确理解了这个问题,那么两个 temp 都是表格,所以新的解决方案应该可以工作。如果没有,请提供更多详细信息

标签: sql select case


【解决方案1】:

编辑:如果我正确理解问题,您希望将值从测试 a 插入到测试 b。如果是这样的话会更好!你可以看看这个寻求帮助:SELECT INTO TABLE

INSERT INTO #test_b [test_b.columns]
    SELECT [test_a.columns], 
    CASE WHEN [COL] = 'A-12' THEN 'Ant'
        WHEN [COL] = 'A-9' THEN 'Alpha'  
        WHEN [COL] = 'AD' THEN 'Aging'
        WHEN [COL] = 'Art' THEN 'Artwork'
        ELSE 'something'
    END    
FROM #test_a

ELSE 不能在 WHEN 之前,您只需要 ELSE ,并且需要使用 END 关闭 CASE。可以参考:SQL CASE

SELECT * INTO #test_b
    CASE WHEN [COL] = 'A-12' THEN 'Ant'
        WHEN [COL] = 'A-9' THEN 'Alpha'  
        WHEN [COL] = 'AD' THEN 'Aging'
        WHEN [COL] = 'Art' THEN 'Artwork'
        ELSE 'something'
    END
    FROM #test_a

【讨论】:

    【解决方案2】:

    不会有 ELSE 和 When 在一起......就像你做的那样 ELSE WHEN [COL] = 'Art'

    SELECT * INTO #test_b
            CASE WHEN [COL] = 'A-12' THEN 'Ant'
                 WHEN [COL] = 'A-9' THEN 'Alpha'  
                 WHEN [COL] = 'AD' THEN 'Aging'
                 WHEN [COL] = 'Art' THEN 'Artwork'  
                 ELSE 'Some Default value'    -- or don't add ELSE if not required
            END
        FROM #test_a
    

    这里是使用CASE in SQL的教程

    【讨论】:

    • 缺少END 关闭CASE
    • ELSE 块后缺少一个END
    【解决方案3】:

    在“FROM #test_a”之前写INTO“#test_b”并在此之前结束

    【讨论】:

      猜你喜欢
      • 2014-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      相关资源
      最近更新 更多