2016-02-05 59 views
3

我想知道是否有办法做到像这样的查询(其中Z是一个变量)SQL查询,只有一个参数

SELECT * FROM table t WHERE t.X = Z OR t.Y = Z 

只写一次的Z。当我尝试真正执行它,但我喜欢的方式做更具体的我想这样做相同的查询,像这样

SELECT * FROM table t WHERE (t.X OR t.Y) = Z 

我使用的是Oracle数据库,它(显然)给我一个错误就像在第二个查询中一样。

为了让你知道我的情况XY都是VARCHAR2和我已经尝试像

SELECT * FROM table t WHERE (t.X || t.Y) like '%Z%' 

但是,不幸的,它并不像第一个那样准确。

+0

请检查https://docs.oracle.com/cd/E17952_01/refman-5.0-en/select.html和https://docs.oracle.com/cd /E17952_01/refman-5.0-en/expressions.html语法描述。你的第一个SQL语句很好,为什么你不想使用它? –

+0

由于我维护的是Java应用程序,在这种特定情况下,我更愿意只更改查询,而不是添加更多代码行 –

回答

3

您可以使用in

WHERE Z IN (t.X, t.Y) 

列可以在IN列表以及常量。

+0

这绝对是一种方法。 –

+0

这是我从未想过的解决方案,我不知道列可以在IN的右侧,谢谢:) –

+0

@ GiacomoF.M。 。 。 。我记得很久很久以前,我有同样的反应。 –

0

尝试像这样

SELECT * FROM table t WHERE (t.X like %Z% OR t.Y like %Z%) 
+0

我感谢你的答案,但这样做就像你强迫我写了2次相同的变量 –