解码Oracle SQL中的多个值
我有一个简单的问题,但我找不到解决办法。我需要:解码Oracle SQL中的多个值,sql,oracle,where,decode,Sql,Oracle,Where,Decode,我有一个简单的问题,但我找不到解决办法。我需要: WHERE (tableABC.name = (DECODE (:p_type,'Morning', 'GOODMORNING', 'Afternoon', 'GOODAFTERNOON', 'Day', IN('GOODMORNING','GOODAFTERNOON')) 不幸的是,它不起作用。我不能使用任何
WHERE
(tableABC.name = (DECODE (:p_type,'Morning', 'GOODMORNING',
'Afternoon', 'GOODAFTERNOON',
'Day', IN('GOODMORNING','GOODAFTERNOON'))
不幸的是,它不起作用。我不能使用任何其他表格,因为它是在报告中使用的,“早上,下午,天”是想象中的单词(它应该是用户友好的)。表中确实存在秒数,但此列还有许多下一个值(例如:“Goodwillight”、“Goodwillight”)。
我只需要从特定列中选择两个具有许多不同值的值,这些值将在“日”选择下选择
非常感谢,
D. < /P> < P>在中间,你不能把比较条件从<代码>=< /代码>改为<代码>。您可以通过切换到仅使用简单布尔逻辑来实现您的目标:
WHERE (:p_type = 'Morning' AND tableABC.name = 'GOODMORNING')
OR (:p_type = 'Afternoon' AND tableABC.name = 'GOODAFTERNOON')
OR (:p_type = 'Day' AND tableABC.name IN ('GOODMORNING', 'GOODAFTERNOON'))
WHERE (:p_type = 'Morning' AND tableABC.name = 'GOODMORNING') OR
(:p_type = 'Afternoon' AND tableABC.name = 'GOODAFTERNOON') OR
(:p_type = 'Day' AND tableABC.name IN ('GOODMORNING', 'GOODAFTERNOON'))
如果您有其他条件,则使用一组额外的括号将整个内容括起来:
WHERE ((:p_type = 'Morning' AND tableABC.name = 'GOODMORNING')
OR (:p_type = 'Afternoon' AND tableABC.name = 'GOODAFTERNOON')
OR (:p_type = 'Day' AND tableABC.name IN ('GOODMORNING', 'GOODAFTERNOON')))
AND <something else>
WHERE(:p_type='Morning'和tableABC.name='GOODMORNING')
或者(:p_type='detainy'和tableABC.name='gooddetainy')
或者(:p_type='Day'和tableABC.name IN('GOODMORNING','good午后'))
及
< /代码> 您不能将中间条件从<代码> >代码> > <代码> >中间。您可以通过切换到仅使用简单布尔逻辑来实现您的目标:
WHERE (:p_type = 'Morning' AND tableABC.name = 'GOODMORNING')
OR (:p_type = 'Afternoon' AND tableABC.name = 'GOODAFTERNOON')
OR (:p_type = 'Day' AND tableABC.name IN ('GOODMORNING', 'GOODAFTERNOON'))
WHERE (:p_type = 'Morning' AND tableABC.name = 'GOODMORNING') OR
(:p_type = 'Afternoon' AND tableABC.name = 'GOODAFTERNOON') OR
(:p_type = 'Day' AND tableABC.name IN ('GOODMORNING', 'GOODAFTERNOON'))
如果您有其他条件,则使用一组额外的括号将整个内容括起来:
WHERE ((:p_type = 'Morning' AND tableABC.name = 'GOODMORNING')
OR (:p_type = 'Afternoon' AND tableABC.name = 'GOODAFTERNOON')
OR (:p_type = 'Day' AND tableABC.name IN ('GOODMORNING', 'GOODAFTERNOON')))
AND <something else>
WHERE(:p_type='Morning'和tableABC.name='GOODMORNING')
或者(:p_type='detainy'和tableABC.name='gooddetainy')
或者(:p_type='Day'和tableABC.name IN('GOODMORNING','good午后'))
及
不要使用decode()
。甚至不要使用case
。将其表示为布尔逻辑:
WHERE (:p_type = 'Morning' AND tableABC.name = 'GOODMORNING')
OR (:p_type = 'Afternoon' AND tableABC.name = 'GOODAFTERNOON')
OR (:p_type = 'Day' AND tableABC.name IN ('GOODMORNING', 'GOODAFTERNOON'))
WHERE (:p_type = 'Morning' AND tableABC.name = 'GOODMORNING') OR
(:p_type = 'Afternoon' AND tableABC.name = 'GOODAFTERNOON') OR
(:p_type = 'Day' AND tableABC.name IN ('GOODMORNING', 'GOODAFTERNOON'))
不要使用decode()
。甚至不要使用case
。将其表示为布尔逻辑:
WHERE (:p_type = 'Morning' AND tableABC.name = 'GOODMORNING')
OR (:p_type = 'Afternoon' AND tableABC.name = 'GOODAFTERNOON')
OR (:p_type = 'Day' AND tableABC.name IN ('GOODMORNING', 'GOODAFTERNOON'))
WHERE (:p_type = 'Morning' AND tableABC.name = 'GOODMORNING') OR
(:p_type = 'Afternoon' AND tableABC.name = 'GOODAFTERNOON') OR
(:p_type = 'Day' AND tableABC.name IN ('GOODMORNING', 'GOODAFTERNOON'))
你的问题不清楚。。更新..并添加适当的数据样本。预期结果您的问题不清楚。。更新..并添加适当的数据样本。以及预期结果