【问题标题】:Negate a bind variable否定绑定变量
【发布时间】:2015-07-26 15:52:34
【问题描述】:

我正在使用 APEX 5.0,我有一个查询,例如:

Select * FROM table where condition = :BIND_VARIABLE

我有一个动态填充绑定变量的列表。该列表有两个值可供绑定变量使用:

Value 1
Everything except value 1

返回的“其他所有”值是用户控制的,所以我不能有 EXISTS 或 IN,因为我不知道其中的所有值。

有没有可能做类似的事情

Select * FROM table where condition = !'Value 1'

【问题讨论】:

  • 而不是= 使用<>
  • 但是当我需要它是 Value 1 时,它需要是 = 。它是 ORACLE APEX 中的一个选择列表,我无法动态更改查询。我需要一个可以处理这两种情况的查询。

标签: sql oracle11g oracle-apex


【解决方案1】:

我不记得 oracle 子字符串的确切语法,但您可以尝试以下方法:

Select *
FROM table
where
(condition = :BIND_VARIABLE AND SUBSTR(:BIND_VARIABLE, 1, 1) <> '!')
OR
(condition <> SUBSTR(:BIND_VARIABLE, 2) AND SUBSTR(:BIND_VARIABLE, 1, 1) = '!')

所以,如果您的值以 ! 符号开头 - 您将查找除传递值之外的所有值

【讨论】:

  • 如果我选择 'Value1' 它只返回所有值 1,但如果我选择 '!Value1' 作为绑定变量,它会返回所有值,包括 Value1
  • @user2924127 我刚刚更新,在第二条语句中检查 substr
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
  • 2013-05-18
  • 2011-12-27
  • 1970-01-01
  • 2022-12-10
  • 1970-01-01
  • 2016-01-31
相关资源
最近更新 更多