RPAD和CASE语句 - Oracle SQL - 缺少右括号错误

时间:2018-05-30 17:17:13

标签: sql oracle case

尝试在select语句中包含CASE语句。一个工作,但这一个返回错误“缺少右括号”。

  

||当RPAD(RA.TAX_ID,9)不为空时(RA.TAX_ID,9)ELSE'99999999',9)END

这是一个用于提供上下文的查询的编辑版本。第二个案例陈述有效。

    >SELECT DISTINCT
    > RPAD ('D', 1)
    > || CASE WHEN RPAD (RA.TAX_ID,9) IS NOT NULL THEN (RA.TAX_ID,9) ELSE  '999999999',9) END

    > || CASE WHEN RPAD (RA.ACCOUNT_ENTITY_IND, 1) = 'P' THEN 'I' ELSE ' ' END
    > || RPAD (RA.LAST_NAME, 20)
    > || RPAD (RA.FIRST_NAME, 20)
    > || RPAD (' ', 10)
    > AS HEADER_ROW

3 个答案:

答案 0 :(得分:1)

CheckAndMutatethen元素都格式不正确。

else

大概 || CASE WHEN RPAD (RA.TAX_ID,9) IS NOT NULL THEN (RA.TAX_ID,9) ELSE '999999999',9) END ^ ^^^ ^^^ 应该是另一个then来电,但rpad()看起来应该是一个简单的文字:

else

如果您使用像SQL Developer这样的IDE,它会突出显示这样的简单语法错误。

答案 1 :(得分:1)

使用coalesce()

会不会更简单
|| COALESCE(RPAD(RA.TAX_ID,9), '999999999') ||

答案 2 :(得分:0)

这里没有看到未公开的括号:       ==> '999999999',9)