首页 > 解决方案 > CASE WHEN 不适用于某些语法不正确的值

问题描述

我正在尝试在更新语句时做一个案例,但我在''附近不断收到不正确的语法。错误。我不明白,因为下面的第二个查询运行得很好,但第一个没有。唯一的区别是我设置memrvam为 1.24 而不是 8.48。

UPDATE a
SET memslam = CASE detseqno
                 WHEN 1923 THEN 338.63
                 WHEN 43 THEN 355.56
              END,
    memrvam = CASE detseqno
                 WHEN 1923 THEN ‭8.48‬
                 WHEN 43 THEN 8.89
              END
FROM slst1consl a
LEFT JOIN wprsbatchxref b ON b.batchnum = a.batchid
                          AND b.recdate = a.recdt
                          AND b.supplier_date = a.supdt
WHERE b.batch_id IN(2058708, 2058709)
  AND memid = 922269
  AND detseqno IN (1043, 43);

UPDATE a
SET memslam = CASE detseqno
                 WHEN 1923 THEN 338.63
                 WHEN 43 THEN 355.56
              END,
    memrvam = CASE detseqno
                 WHEN 1923 THEN 1.24
                 WHEN 43 THEN 8.89
              END
FROM slst1consl a
LEFT JOIN wprsbatchxref b ON b.batchnum = a.batchid
                          AND b.recdate = a.recdt
                          AND b.supplier_date = a.supdt
WHERE b.batch_id IN (2058708, 2058709)
  AND memid = 922269
  AND detseqno IN (1043, 43);

标签: sql-server

解决方案


那里有隐藏的特殊字符:

                THEN 8.48

将此行复制到我的编辑器时,我看到

                THEN ?8.48?

因此,只需删除该行并重新编写即可。


推荐阅读