带有OR子句且只有一个参数的SQL查询
我想知道是否有一种方法可以进行这样的查询(其中带有OR子句且只有一个参数的SQL查询,sql,database,oracle,Sql,Database,Oracle,我想知道是否有一种方法可以进行这样的查询(其中Z是一个变量) 只写入一次Z。更具体地说,我想这样做同样的查询 SELECT * FROM table t WHERE (t.X OR t.Y) = Z 我使用的是Oracle DB,当我尝试执行它时,它(显然)会给我一个错误,但我真的很喜欢在第二个查询中这样做 为了让你知道我的处境,X和Y都是VARCHAR2,我已经尝试了类似的方法 SELECT * FROM table t WHERE (t.X || t.Y) like '%Z%' 但是,不
Z
是一个变量)
只写入一次Z
。更具体地说,我想这样做同样的查询
SELECT * FROM table t WHERE (t.X OR t.Y) = Z
我使用的是Oracle DB,当我尝试执行它时,它(显然)会给我一个错误,但我真的很喜欢在第二个查询中这样做
为了让你知道我的处境,X
和Y
都是VARCHAR2,我已经尝试了类似的方法
SELECT * FROM table t WHERE (t.X || t.Y) like '%Z%'
但是,不幸的是,它没有第一个准确。您可以在中使用
:
WHERE Z IN (t.X, t.Y)
列可以位于
列表中的中,也可以位于常量中。请这样尝试
SELECT * FROM table t WHERE (t.X like %Z% OR t.Y like %Z% )
这绝对是正确的方法。这是一个我从未想到的解决方案,我不知道列可以位于IN的右侧,谢谢:)@GiacomoF.M。我记得很久很久以前,我也有同样的反应。请检查和语法描述。您的第一条SQL语句很好,为什么不使用它呢?因为我正在维护一个Java应用程序,在这种特定情况下,我更喜欢只更改查询,而不是添加更多的代码行。谢谢您的回答,但是按照您说的做会迫使我编写相同变量的两倍
SELECT * FROM table t WHERE (t.X like %Z% OR t.Y like %Z% )