1

我正在构建一个复杂的 SQL 查询,我想在 while 语句中测试结果。

我想做类似的事情:

WHERE ( R.Expired IS NULL OR R.Expired > SYSDATE )
  AND (
    CASE
      WHEN R.Description LIKE '%SSX%' THEN TRUE
      ELSE  FALSE
    END
  ) ORDER BY R.Name

但是 PL/SQL 说它有一些“无效的关系运算符”(翻译)。

我的 CASE 陈述有问题吗?

4

3 回答 3

4

这些CASE WHEN东西对我来说似乎没有必要。

只需使用

AND (R.Description Like '%SSX')

调试的第一条规则——避免不必要的复杂性。

于 2012-06-07T12:12:01.233 回答
1

不确定您要在这里实现什么,但您也许可以尝试将 TRUE 和 FALSE 括在单引号中(因为 SQL 不支持布尔值)或简单地编写类似AND R.Description LIKE '%SSX%'.

于 2012-06-07T12:13:18.717 回答
1

简单的:

WHERE (R.Expired IS NULL OR R.Expired > SYSDATE) AND 
      R.Description LIKE '%SSX%'
于 2012-06-07T12:15:38.750 回答