Oracle SQL - 根据另一个值修改内容

时间:2017-06-28 02:57:29

标签: sql oracle case

我一直在这里收到ORA-00905:丢失关键字错误。你能好好看看吗?

任务是用' N / A'替换属性的内容。如果另一个变量等于' R'否则 - 保持该值不变。

以下是我的代码摘录:

SELECT
CASE 
   WHEN SCHEMA.TABLE.VAR1 = 'R' THEN SCHEMA.TABLE.VAR2 = 'N/A'
   ELSE SCHEMA.TABLE.VAR2
END AS NEW_NAME

2 个答案:

答案 0 :(得分:1)

如果您打算更改SQL表中的数据,那么您应该在这里使用更新而不是选择:

UPDATE yourTable
SET SCHEMA.TABLE.VAR2 = 'N/A'
WHERE SCHEMA.TABLE.VAR1 = 'R'

如果您需要在此处选择,请使用以下内容:

SELECT
    CASE WHEN SCHEMA.TABLE.VAR1 = 'R' THEN 'N/A' ELSE SCHEMA.TABLE.VAR2 END AS NEW_NAME
FROM yourTable

答案 1 :(得分:1)

如果您想要select,则列别名在 select之后=子句中不允许then

SELECT (CASE WHEN SCHEMA.TABLE.VAR1 = 'R' THEN 'N/A'
             ELSE SCHEMA.TABLE.VAR2
        END) AS NEW_NAME

注意:您应该使用表别名,因此查询更容易编写和阅读:

SELECT (CASE WHEN t.VAR1 = 'R' THEN 'N/A'
             ELSE t.VAR2
        END) AS NEW_NAME,
       . . .
FROM SCHEMA.TABLE t . ..