0

我知道我不能使用 Case 语句返回多个值,但这是我可以解释我想要完成的最佳方式。我正在尝试编写一个语句,我将根据在另一个字段中输入的内容返回不同的值。我目前有这样的事情:

SELECT animal WHERE CASE WHEN :textbox is not null THEN (SELECT animal from animalsTable where animalType = :textbox ELSE (SELECT plant from plantsTable where plantType = 'edible')

所以基本上,我希望能够列出与用户在文本框中输入的内容相对应的所有动物,但如果他们没有在文本框中输入任何内容,那么我想向他们展示所有可食用的植物。我几乎总是会为他们输入的每个值返回多个值。

例如,如果用户键入“dog”,那么我将返回“dog”和“wolf”。所以这会导致一个问题,因为 case 语句是布尔值。我怎样才能解决这个问题?

谢谢。

4

2 回答 2

0

您可以检查textbox每个表的值并将结果合并:

select animal from animalsTable where animalType = :textbox 
and :textbox is not null
union all
select plant from plantsTable where plantType = 'edible' 
and :textbox is null
于 2015-01-12T21:10:40.917 回答
0

您可以创建一个包含所有查找值列表的 ALN 域。在这种情况下,动物和植物。然后根据您要筛选的关键字段创建一个引用 ALN 域的表域。您需要将此键作为单个值存储在“描述”字段中,或者将多个值存储为由空格或逗号分隔的多个值。

对我们来说,我们使用了一个自定义字段(子类别),该字段显示了来自 ALN 域的有限查找,使用了对资产部门编号的表域过滤。资产部门编号列在 ALN 域描述中。

ALN 域包含您的植物和动物值。ALN 域的描述包含您的关键字段值。

如果资产部门为空,则显示整个列表。

domainid='CBRSUBCAT' 和类似 '%' 的描述 ||  (从assetnum = :assetnum 的资产中选择eq5)||  '%'

list where 子句如下所示:

domainid='CBRSUBCAT' and description like '%' || (select eq5 from asset where assetnum = :assetnum) || '%'

我使用了 a like,因此我们可以为一个以逗号分隔的子类别输入多个部门。对你来说,如果你愿意,你可以使用描述=(等于)。

于 2016-12-12T17:35:21.307 回答