sql-where子句

5w9g7ksd  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(275)

我在oracle的apex环境中工作,尝试在一种情况下返回所有值,在另一种情况下返回特定值。如果您不熟悉apex,它会使用低级代码生成数据驱动的前端页面;本例使用下拉列表从列表中进行选择,我将该列表选择与从数据库中提取的值进行比较。
这将创建下拉列表(需要2列—显示列[name]和返回列[id]):

select distinct 'All users' as name,
 '99999' as id
from real_table
union
select distinct name,
 id
from real_table

该输入存储在一个变量中,我们称之为:list\u input。当选择“所有用户”时,我想从另一个\u表中选择所有值,当选择特定用户的名称/id时,只选择与该用户关联的值。下面是代码,我必须尝试和实现,但没有骰子。

select name,
 id,
 other_col1,
 other_col2
from another_table
where case
  when :LIST_INPUT like '99999' then '%'
  else :LIST_INPUT
 end like id

当选择了一个真实的用户id时,它可以正常工作,但是当选择了“all users”值时,它不返回任何内容。我在这里的逻辑是,我要求它将通配符与id字段进行比较,因此它应该返回所有内容,但是它不返回任何内容。
谢谢!

qxgroojn

qxgroojn1#

可能不需要案例陈述,看:

select name,
       id,
       other_col1,
       other_col2
  from another_table
 where id = :LIST_INPUT
    OR :LIST_INPUT like '99999' -- You can use any other condition here
ljo96ir5

ljo96ir52#

我认为你的 LIKE 运算符的操作数顺序错误。不是吗?

select name,
 id,
 other_col1,
 other_col2
from another_table
where id like case
  when :LIST_INPUT like '99999' then '%'
  else :LIST_INPUT
  end

相关问题